概要
用AI搜了一下,引入Jasypt是较为合适并且简单的。。
技术细节
- 1、pom.xml引入jar
<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>3.0.5</version> </dependency>
- 2、生成加密后的密码:
public static void main(String[] args) { StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); // 设置加密密钥 encryptor.setPassword("yourSecretKey"); // 加密算法 encryptor.setAlgorithm("PBEWithMD5AndDES"); // 要加密的数据 String sensitiveData1 = "dbSecret"; String encryptedData1 = encryptor.encrypt(sensitiveData1); System.out.println("加密后的数据: ENC(" + encryptedData1 + ")"); System.out.println(encryptor.decrypt(encryptedData1)); }
3、数据库密码设置
password: ENC(jzywmi5oSKrYf9w7C28rj5jEeOypCHdK)
4、在uat环境启动,sh start.sh,结果启动失败。修改启动脚本
#环境变量设置加密的秘钥 export JASYPT_ENCRYPTOR_PASSWORD=yourSecretKey java -jar your.jar
5、还是报错,并且是报的别的spring属性配置找不到。搜了好久才知道
spring cloud 项目引入jasypt-spring-boot-starter后会导致其他配置不生效,处理方式:在配置文件里加上:
# 处理方式 jasypt: encryptor: bootstrap: true # 指定解密算法,需要和加密时使用的算法一致 algorithm: PBEWithMD5AndDES # 指定initialization vector类型 iv-generator-classname: org.jasypt.iv.NoIvGenerator