Java使用jasypt配置文件加密方式
作者:努力的小玖心
本文介绍了使用POM文件引入加密插件对配置文件内容进行加密的方法,将加密内容替换为ENC()格式,项目启动时自动解密;并提供了一种动态密钥的方法,避免每个项目单独写加解密程序
1.pom文件引入
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>2.对配置文件内容加密生成加密串
@SpringBootTest
public class JasyptSpringIntegrationTest {
@Autowired
private StringEncryptor encryptor; // 自动注入 Jasypt 加密器
@Test
public void testEncryptorBean() {
//加密数据
System.out.println(encryptor.encrypt("jdbc:postgresql://192.168.1.146:5000/cme_guide?stringtype=unspecified&useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=Asia/Shanghai"));
System.out.println(encryptor.encrypt("postgres"));
System.out.println(encryptor.encrypt("etetyadsjhsasd@3$"));
System.out.println(encryptor.encrypt("jdbc:postgresql://192.168.1.146:5001/cme_guide?stringtype=unspecified&useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=Asia/Shanghai"));
String encryptStr = encryptor.encrypt("postgres");
String decryptStr = encryptor.decrypt(encryptStr);
//校验加密前后密钥是否相等
assertEquals("postgres", decryptStr);
}
}3.配置文件要加密的内容替换为ENC(),新增一个加密密钥
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: org.postgresql.Driver
druid:
# 主库数据源
master:
url: ENC(O6PmZNFcRxoRCc39Ii4JhKqSDaacM9kavIWs1ryK148cScuayYfOchNM+l14F4DGKi7GnxQNfDuUQsLJPyOcP99oZEmLDhCNSe9+iH9K3AnebsSBqCfzgwcyBuDq9beFFLd62vmpXwgerxc27Jeakcp4rwCl5zE8kK/iA2aPda2Qx3LFAvx+OJfZKKzD2QP2VLG5tzbt60QiN8n40xJEhZHyqAwCk9nyIu7HXVULvBptiQ53pJMUAtqo4tolD0POLh29FYz6tDyOBXimy9q5vw==)
username: ENC(m/QoMK4ImE31eW6d7U96XBsW7J8xnGxKxELpcQ70LwGdHnRI49J0KSxQo0G43dBa)
password: ENC(BHkWbTNCuCjLkuyLb0Xoxh5oNFyYoBKpTv61OMnXNkUBelTkWVkIDcD3nZG3Gn9l)
# 配置加密密钥
jasypt:
encryptor:
password: ${SECRET_PASSWORD}备注:
jdk8版本别太低,我使用的1.8.0_381,项目启动会自行对ENC加密的数据进行解密,可以单写一个加解密的程序(动态密钥),就不用每个项目都写test去加解密了
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
