以数据用户名和数据库密码加密为例
第一步.导入pom依赖
<!-- jasypt加密 -->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
第二步.配置文件
```java
jasypt:
encryptor:
password: ${a_pass:654321} #获取系统环境变量${}
jasypt:
encryptor:
password: ${a_pass:654321} #获取系统环境变量${}
第三步.使用工具类
public class JasyptUtil {
public static void main(String[] args) {
//加密: MMM752WWW257,secritery为密码
String url = encyptPwd("MMM752WWW257", "jdbc:mysql://127.0.0.1:3306/einvoice-medical?useUnicode=true&characterEncoding=utf-8&useSSL=false");
String name = encyptPwd("MMM752WWW257", "root");
String pass = encyptPwd("MMM752WWW257", "123456");
System.out.println("ENC("+url+")");
System.out.println("ENC("+name+")");
System.out.println("ENC("+pass+")");
//解密: MMM752WWW257为盐值,使用加密后的密码: ENC(EVVBR9iTfxRUtsZZW7FbPPUoBhqd0Zr4)
System.out.println(decyptPwd("MMM752WWW257",url));
System.out.println(decyptPwd("MMM752WWW257",name));
System.out.println(decyptPwd("MMM752WWW257",pass));
}
// 加密
public static String encyptPwd(String password,String value) {
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
encryptor.setConfig(cryptor(password));
String encrypt = encryptor.encrypt(value);
return encrypt;
}
// 解密
public static String decyptPwd(String password,String value) {
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
encryptor.setConfig(cryptor(password));
String decrypt = encryptor.decrypt(value);
return decrypt;
}
private static SimpleStringPBEConfig cryptor(String password) {
SimpleStringPBEConfig config = new SimpleStringPBEConfig();
config.setPassword(password);
config.setAlgorithm("PBEWithMD5AndDES");
config.setKeyObtentionIterations("1000");
config.setPoolSize("1");
config.setProviderName("SunJCE");
config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
config.setStringOutputType("base64");
return config;
}
}