安基网 首页 编程 Java 查看内容

Jasypt一款简化的JAVA加密工具包

2019-5-26 01:41| 投稿: xiaotiger |来自: 互联网


免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!

摘要: 简介Jasypt是一个java库,它允许开发人员以最少的工作量为项目添加基本的加密功能,而无需深入了解密码学的工作原理。它具有一下特点:高安全性,基于标准的加密技术,适用于单向和双向加密。 加密密码,文本,数字,二进制文件......与Hibernate透明集成。适合集成到基于Spring的应用程序中,并且还可 ...

简介

Jasypt是一个java库,它允许开发人员以最少的工作量为项目添加基本的加密功能,而无需深入了解密码学的工作原理。它具有一下特点:

  • 高安全性,基于标准的加密技术,适用于单向和双向加密。 加密密码,文本,数字,二进制文件......
  • 与Hibernate透明集成。
  • 适合集成到基于Spring的应用程序中,并且还可以与Spring Security透明地集成。
  • 用于加密应用程序配置(即数据源)的集成功能。
  • 多处理器/多核系统中高性能加密的特定功能。
  • Open API,用于任何JCE提供程序。

简单加密

要使用简单的算法执行加密和解密,我们可以使用Jasypt库中BasicTextEncryptor 类:

BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
String privateData = "secret-data";
textEncryptor.setPasswordCharArray("some-random-data".toCharArray());

然后我们可以使用encrypt()方法加密纯文本:

String myEncryptedText = textEncryptor.encrypt(privateData);
assertNotSame(privateData, myEncryptedText);

如果我们想要将数据解密回纯文本,我们可以使用decrypt()方法:

tring plainText = textEncryptor.decrypt(myEncryptedText);
assertEquals(plainText, privateData);

单向加密

一般在做用户认证的时候,传统上我们通常会使用MD5做简单的密码加密,然后登录时必须MD5值实现。同样的需求,我们也可以使用Jasypt来实现,并且可以自定义自己的密钥。

我们可以使用BasicPasswordEncryptor类来执行单向加密:

String password = "secret-pass";
BasicPasswordEncryptor passwordEncryptor = new BasicPasswordEncryptor();
String encryptedPassword = passwordEncryptor.encryptPassword(password);

然后,我们可以将已加密的密码与执行登录过程的用户密码进行比较,而无需解密已存储在数据库中的密码:

boolean result = passwordEncryptor.checkPassword("secret-pass",encryptedPassword);
assertTrue(result);

配置加密算法

我们可以使用更安全、更强大的加密算法,但我们需要为我们的JVM 安装Java Cryptography Extension(JCE)Unlimited Strength Jurisdiction Policy Files

在Jasypt中,我们可以使用StandardPBEStringEncryptor类来使用强加密,并使用setAlgorithm()方法对其进行自定义:

StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
String privateData = "secret-data";
encryptor.setPassword("some-random-passwprd");
encryptor.setAlgorithm("PBEWithMD5AndTripleDES");

我们将加密算法设置为PBEWithMD5AndTripleDES。

接下来,加密和解密过程与使用BasicTextEncryptor类的前一个过程相同:

String encryptedText = encryptor.encrypt(privateData);
assertNotSame(privateData, encryptedText);

String plainText = encryptor.decrypt(encryptedText);
assertEquals(plainText, privateData);

使用多线程解密

当我们在多核机器上运行时,我们希望并行处理解密处理。为了获得良好的性能,我们可以使用PooledPBEStringEncryptor setPoolSize() API来创建一个解密线程池。它们中的每一个都可以由不同的线程并行使用:

PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
encryptor.setPoolSize(4);
encryptor.setPassword("some-random-data");
encryptor.setAlgorithm("PBEWithMD5AndTripleDES");

最好将池大小设置为等于机器的核心数。加密和解密的代码与以前的代码相同。

集成

最后一点快速说明,Jasypt库可以与许多其他库集成,包括Spring Framework,我们只需要创建一个配置来为Spring应用程序添加加密支持。如果我们想将敏感数据存储到数据库中并且我们使用Hibernate作为数据访问框架,我们也可以将Jasypt与它集成。

手册地址

http://www.jasypt.org/

总结

总体上来说,jasypt还是一个比较方便而且能够快速上手的加密工具包,你们怎么看呢?



小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!

本文出自:https://www.toutiao.com/a6694982971071398407/

免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!


鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

 最新
返回顶部