spring boot 对配置文件加密

配置文件中的数据库账户、密码不能明文展示。否则代码泄露的话,数据库就被人删除跑路了。

首先引入依赖

1
2
3
4
5
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>

  

编写测试代码

1
2
3
4
5
6
7
8
9
10
11
@Test
    public void testDecrypt(){
        BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
        //加密所需的salt(盐)
        textEncryptor.setPassword("bad_boy");
        //要加密的数据(数据库的用户名或密码)
        String username = textEncryptor.encrypt("root");
        String password = textEncryptor.encrypt("123456");
        System.out.println("username: " + username);
        System.out.println("password:" + password);
    }

  

将加密后的数据填写到配置文件中

1
2
3
4
5
6
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/wcscanner?characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true
    username: ENC(JWkISjb1dfh+x1AMNIqr/Q==)
    password: ENC(rMP11CKRnw+s1vM/iTgF1FdS+XylskGiM3fZqMeaOFM=)

  

加密配置

1
2
3
4
jasypt:
  encryptor:
    password:
    algorithm: PBEWithMD5AndDES

  

运行时增加秘钥变量

--jasypt.encryptor.password=bad_boy

java -jar foo.jar --jasypt.encryptor.password=bad_boy

愉快运行即可。

解密代码

 

posted @   妇愁者纞萌  阅读(597)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示