Jasypt懒得简介了,有兴趣直接看官网, 直接传送官
1、引入pom依赖
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot</artifactId>
<version>2.1.0</version>
</dependency>
2、配置加密参数
jasypt:
encryptor:
password: test
3、生成秘钥
package utils;
import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;
public class JasyptUtil {
/**
* Jasypt生成加密结果
* @param password 配置文件中设定的加密密
* @param value 加密值
* @return
*/
public static String encyptPwd(String password,String value){
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
encryptor.setConfig(cryptor(password));
String result = encryptor.encrypt(value);
return result;
}
/**
* 解密
* @param password 配置文件中设定的加密密码
* @param value 解密密文
* @return
*/
public static String decyptPwd(String password,String value){
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
encryptor.setConfig(cryptor(password));
String result = encryptor.decrypt(value);
return result;
}
public 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;
}
public static void main(String[] args){
//加密
System.out.println(encyptPwd("test","root"));
//解密
System.out.println(decyptPwd("test","lX4+hsVbnoVQuW/WLd3ONw=="));
}
}
4、将生成的加密密匙配置在配置文件中即可,ENC 是约定的关键字,在启动时会解析所有 PropertySource 中的加密属性。
spring:
datasource:
password: ENC(lnzpDZItgjAntHqsYPFTew==)
5、配置@EnableEncryptableProperties
@Configuration
@EnableEncryptableProperties
public class MyApplication {
}