【Java库】如何使用优秀的加密库Jasypt来保护你的敏感信息?
2019-12-11 23:29
543 查看
1 简介
今天我们介绍一个Java库-Jasypt,全称为
Java Simplified Encryption,用于加密解密。它能够让开发者用花费最小的工作而把加密集成到项目中,并且不需要对加密/解密有深入的了解。
通过
Maven引用jar包如下:
<dependency> <groupId>org.jasypt</groupId> <artifactId>jasypt</artifactId> <version>1.9.3</version> <scope>compile</scope> </dependency>
2 简单文本加密
文本加密是加密中最经常遇到的需求,如通讯消息、交易流水、账号信息等,这些都是非常敏感的信息,许多场景下都需要加密储存,然后读取展示的时候再解密。Jasypt提供的API非常方便,设置加密的密钥后,就可以加密信息了,代码如下:
BasicTextEncryptor textEncryptor = new BasicTextEncryptor(); //设置加密密钥 textEncryptor.setPassword("MySalt"); //加密信息 String encryptedText = textEncryptor.encrypt("This is a secret message."); System.out.println("encryptedText:" + encryptedText); //解密 String decryptedText = textEncryptor.decrypt(encryptedText); System.out.println("decryptedText:" + decryptedText);
代码执行的结果为:
encryptedText:S+j0ZQBxJloVi/qrEwvgnnu9tmeFMnJcmMoTY8wBhbLIdR2IFDt+Fw== decryptedText:This is a secret message.
3 单向密码加密
用户密码是极其敏感的信息,不应该把密码明文储存在数据库中。我们需要把密码明文进行加密处理后,再把密文储存在数据库中。当用户登陆时,需要进行密码校验,有两种方案:一种方案是把数据库中的密文解密成明文,再与用户输入的密码进行对比;另一种方案是把用户输入的密码进行加密,把加密后的密文与数据库的密文进行对比。
第二种方案是更合理的,一方面是因为加密比解密更容易,性能更好;另一方面是减少明文出现的次数,保证安全性。第二种方案完全不需要解密,所以我们只需要单向地密码加密便可以了。以下代码展示这种场景下的应用:
BasicPasswordEncryptor encryptor = new BasicPasswordEncryptor(); //加密密码 String encryptedPassword = encryptor.encryptPassword("MyPassword"); //检查密码:正确 System.out.println(encryptor.checkPassword("MyPassword", encryptedPassword)); //检查密码:错误 System.out.println(encryptor.checkPassword("myPassword", encryptedPassword));
代码执行的结果为:
true false
4 改变加密算法
Jasypt为我们提供的灵活的加密/解密操作,可以自定义地使用不同的算法进行加密解密。下面的代码例子展示了如何使用加密算法PBEWithMD5AndTripleDES:
StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); //设置密钥 encryptor.setPassword("MySalt"); //设置加密算法 encryptor.setAlgorithm("PBEWithMD5AndTripleDES"); //加密信息 String encryptedText = encryptor.encrypt("My secret message."); System.out.println("encryptedText:" + encryptedText); //解密 String decryptedText = encryptor.decrypt(encryptedText); System.out.println("decryptedText:" + decryptedText);
代码执行的结果为:
encryptedText:fdNthKMZzNC5zeNO6b119njcKpqD/02EuGm2fsRs8+c= decryptedText:My secret message.
5 多线程解密
解密通常是比加密更难的过程,Jasypt提供了多线程解密操作,可以并行解密,这样可以提供更好的性能。一般建议可以设置与机器处理器核数一致的线程数进行解密。代码如下:
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor(); //设置线程数为6 encryptor.setPoolSize(6); //设置密钥 encryptor.setPassword("MySalt"); //设置算法 encryptor.setAlgorithm("PBEWithMD5AndTripleDES"); //加密 String encryptedText = encryptor.encrypt("My secret message."); System.out.println("encryptedText:" + encryptedText); //解密 String decryptedText = encryptor.decrypt(encryptedText); System.out.println("decryptedText:" + decryptedText);
代码执行结果为:
encryptedText:wuZLTiEZ52O/nD2ktecPP75LRj+1Bu3s7YyfK8XcOc0= decryptedText:My secret message.
6 总结
本文介绍了一个优秀的Java加密库Jasypt的几种操作,希望对大家在加密场景中有帮助。另外,Jasypt还能与其它框架进行整合,如Spring和Hibernate,以后将为大家介绍。
欢迎关注公众号<南瓜慢说>,将持续为你更新...
欢迎加博主微信,做一个点赞之友,哈哈...
多读书,多分享;多写作,多整理。
相关文章推荐
- 如何使用“PHP” 彩蛋进行敏感信息获取
- 使用技巧:运用加密技术保护Java源代码
- Wordle是优秀的信息可视化吗?如何真正使用Wordle?
- Jasypt : 整合spring boot加密应用配置文件敏感信息
- 如何使用java获取雅虎财经上的股票信息
- 使用jni技术进行android应用签名信息核查及敏感信息保护
- 【赚】使用数据库加密保护敏感数据
- Java:如何使用Cipher类对字符串进行加密解密
- 如何保护敏感信息不被篡改
- 如何使用Java对密码进行加密 Java Sah加密方式帮你实现加密
- 如何使用MD5和SHA算法加密信息
- 如何使用“PHP” 彩蛋进行敏感信息获取
- Wordle是优秀的信息可视化吗?如何真正使用Wordle?
- [原]如何保护敏感信息不被篡改
- 【Java编码准则】の #02不要在客户端存储未加密的敏感信息
- Java程序使用HASP加密狗加密保护的操作步骤--手把手包你学会
- 使用数据库加密保护敏感数据
- 使用java如何爬取12306的余票信息?
- Wordle是优秀的信息可视化吗?如何真正使用Wordle?
- 如何在java中使用Aes算法对密码加密