java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java使用jasypt配置文件加密

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去加解密了

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文