1. 在pom.xml中添加jasypt依赖
<dependency>
<groupid>com.github.ulisesbocchio</groupid>
<artifactid>jasypt-spring-boot-starter</artifactid>
<version>3.0.4</version>
</dependency>>
2. 加密算法
// 1. 创建对象
pooledpbestringencryptor encryptor = new pooledpbestringencryptor();
// 2. 加密配置
simplestringpbeconfig config = new simplestringpbeconfig();
// 秘钥
config.setpassword("your-secret-key");
// 3. 加密算法,需要与解密算法一致
config.setalgorithm("pbewithmd5anddes");
// 为减少配置文件的书写,以下都是 jasyp 3.x 版本,配置文件默认配置
config.setkeyobtentioniterations( "1000");
config.setpoolsize("1");
config.setprovidername("jc");
config.setsaltgeneratorclassname("org.jasypt.salt.randomsaltgenerator");
config.setivgeneratorclassname("org.jasypt.iv.noivgenerator");
config.setstringoutputtype("base64");
encryptor.setconfig(config);
//需要加密的字符串
system.out.println( encryptor.encrypt("需加密的字符串"));
加密后的字符串

3. 在application.yml中配置加密相关信息
使用enc(加密字符串)
url: jdbc:mysql://ip:port/test username: root password: enc(w8bh76qyhsgduxbwk0hsgpbmwzzmoxyvo0dvkopsiy4=)
4. 配置的两种方式
配置解密bean并注入(硬编码) 或 在yml配置jasypt(推荐)
4.1.1 配置bean
@configuration
@enableencryptableproperties
public class customencryptconfig {
@bean(name = "customstringencryptor")
public static stringencryptor stringencryptor() {
pooledpbestringencryptor encryptor = new pooledpbestringencryptor();
// 2. 加解密配置
simplestringpbeconfig config = new simplestringpbeconfig();
config.setpassword("your-secret-key");
// 3. 解密算法,必须与加密算法一致
config.setalgorithm("pbewithmd5anddes");
// 为减少配置文件的书写,以下都是 jasyp 3.x 版本,配置文件默认配置
config.setkeyobtentioniterations( "1000");
config.setpoolsize("1");
config.setprovidername("jc");
config.setsaltgeneratorclassname("org.jasypt.salt.randomsaltgenerator");
config.setivgeneratorclassname("org.jasypt.iv.noivgenerator");
config.setstringoutputtype("base64");
encryptor.setconfig(config);
return encryptor;
}
}
4.1.2 启动类中配置 jasypt.encryptor.bean
customstringencryptor为上一步配置的bean
@springbootapplication
public class springboottestapplication
{
public static void main(string[] args)
{
system.setproperty("jasypt.encryptor.bean", "customstringencryptor");
springapplication.run(snskapplication.class, args);
}
}
4.2.1 启动类中配置 jasypt.encryptor.bean
customstringencryptor为上一步配置的bean
jasypt:
encryptor:
algorithm: pbewithmd5anddes //pbewithhmacsha512andaes_256更安全
iv-generator-classname: org.jasypt.iv.noivgenerator
password: your-secret-key
4.2.2 配置服务器运行参数
java -xms256m -xmx256m -jar / java/app.jar --jasypt.encryptor.password=xxxxx
但是如果我们配置了password值,就需要在启动类加上@enableencryptableproperties这个注解,用于自动解密。
5. 注意
代码加密时的秘钥和算法必须和配置的相同
1. 必须和在bean中配置的秘钥和算法 一致对应
2. 必需在yml中的jasypt.encryptor.password 和 jasypt.encryptor.algorithm 一致对应
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论