记录:423
场景:在Spring Boot微服务中,使用jasypt-1.9.3加密和解密配置。
版本:JDK 1.8,Spring Boot 2.6.3,jasypt-1.9.3。
Jasypt开源地址:https://github.com/jasypt/jasypt
Jasypt: (Java Simplified Encryption) is a java library which allows the developer to add basic encryption capabilities to his/her projects with minimum effort and without the need of having deep knowledge on how cryptography works.
1.在pom.xml中引入依赖
<dependency>
<groupId>org.jasypt</groupId>
<artifactId>jasypt</artifactId>
<version>1.9.3</version>
</dependency>
2.Jasypt核心类
2.1Jasypt核心工具类
在使用Jasypt完成加密和解密业务场景时,使用以下工具类就可以胜任。
TextEncryptor接口:org.jasypt.util.text.TextEncryptor。
BasicTextEncryptor实现类:org.jasypt.util.text.BasicTextEncryptor。
AES256TextEncryptor实现类:org.jasypt.util.text.AES256TextEncryptor。
StrongTextEncryptor实现类:org.jasypt.util.text.StrongTextEncryptor。
2.2Jasypt核心类
BasicTextEncryptor、AES256TextEncryptor和StrongTextEncryptor操作的具体实现类是如下:
org.jasypt.encryption.pbe.StandardPBEStringEncryptor
3.Jasypt核心工具类对应算法
BasicTextEncryptor算法:PBEWithMD5AndDES。
AES256TextEncryptor算法:PBEWithHMACSHA512AndAES_256。
StrongTextEncryptor算法:PBEWithMD5AndTripleDES。
4.示例
4.1使用BasicTextEncryptor示例
/**
* 加密工具类: org.jasypt.util.text.BasicTextEncryptor
* 加密算法: PBEWithMD5AndDES
*/
public static void f1_BasicTextEncryptor() {
BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
System.out.println("当前加密方式: 加密类: BasicTextEncryptor, 加密算法: PBEWithMD5AndDES ");
// 1.设置秘钥
String salt = "U3buwRJdQ2023";
textEncryptor.setPassword(salt);
// 2.加密
// 2.1加密内容
String pd = "Hangzhou20230427";
System.out.println("加密前: " + pd);
// 2.2加密操作
String pdAfterEncrypt = textEncryptor.encrypt(pd);
System.out.println("加密后: " + pdAfterEncrypt);
// 3.解密操作
String pdAfterDecrypt = textEncryptor.decrypt(pdAfterEncrypt);
System.out.println("解密后: " + pdAfterDecrypt);
}
4.2使用AES256TextEncryptor示例
/**
* 加密工具类: org.jasypt.util.text.AES256TextEncryptor
* 加密算法: PBEWithHMACSHA512AndAES_256
*/
public static void f2_AES256TextEncryptor() {
AES256TextEncryptor textEncryptor = new AES256TextEncryptor();
System.out.println("当前加密方式: 加密类: AES256TextEncryptor, 加密算法: PBEWithHMACSHA512AndAES_256 ");
// 1.设置秘钥
String salt = "U3buwRJdQ2023";
textEncryptor.setPassword(salt);
// 2.加密
// 2.1加密内容
String pd = "Hangzhou20230427";
System.out.println("加密前: " + pd);
// 2.2加密操作
String pdAfterEncrypt = textEncryptor.encrypt(pd);
System.out.println("加密后: " + pdAfterEncrypt);
// 3.解密操作
String pdAfterDecrypt = textEncryptor.decrypt(pdAfterEncrypt);
System.out.println("解密后: " + pdAfterDecrypt);
}
4.3使用StrongTextEncryptor示例
/**
* 加密工具类: org.jasypt.util.text.StrongTextEncryptor
* 加密算法: PBEWithMD5AndTripleDES
*/
public static void f3_StrongTextEncryptor() {
StrongTextEncryptor textEncryptor = new StrongTextEncryptor();
System.out.println("当前加密方式: 加密类: StrongTextEncryptor, 加密算法: PBEWithMD5AndTripleDES ");
// 1.设置秘钥
String salt = "U3buwRJdQ2023";
textEncryptor.setPassword(salt);
// 2.加密
// 2.1加密内容
String pd = "Hangzhou20230427";
System.out.println("加密前: " + pd);
// 2.2加密操作
String pdAfterEncrypt = textEncryptor.encrypt(pd);
System.out.println("加密后: " + pdAfterEncrypt);
// 3.解密操作
String pdAfterDecrypt = textEncryptor.decrypt(pdAfterEncrypt);
System.out.println("解密后: " + pdAfterDecrypt);
}
以上,感谢。
2023年4月27日