參考:
工作隨筆——jasypt-spring-boot使用
jasypt-spring-boot:加密SpringBoot的敏感配置信息
SpringBoot(27) 整合jasypt加密yml配置文件
- pom文件增加依賴
<!-- jasypt 配置文件加密 -->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
- 編寫工具類實(shí)現(xiàn)配置加密
/**
* jasypt工具類
* @author wishurhere
* @date 2020/10/9
*/
public final class JasyptUtil {
/**
* jasypt秘鑰(生產(chǎn)中通過(guò)jvm參數(shù)配置的方式進(jìn)行設(shè)置)
*/
private final static String PWD = "yuexin2018";
private JasyptUtil() {
}
private static StandardPBEStringEncryptor getEncryptor() {
StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
// 設(shè)置秘鑰
encryptor.setPassword(PWD);
return encryptor;
}
/**
* 加密
* @param clearStr 明文(同一個(gè)明文每次調(diào)用會(huì)生成不一樣的加密串)
* @return 加密后的字符串
*/
private static String encrypt(String clearStr) {
return getEncryptor().encrypt(clearStr);
}
/**
* 解密
* @param encryptedStr 密文
* @return 解密后的字符串
*/
private static String decrypt(String encryptedStr) {
return getEncryptor().decrypt(encryptedStr);
}
public static void main(String[] args) {
// 加密
System.out.println(encrypt("eip20130412"));
// 解密
System.out.println(decrypt("l52ID0rzCBJry26FhJuovonC1MvGcG8Y"));
}
}
- yml配置
spring:
## 數(shù)據(jù)源配置
datasource:
url: jdbc:mysql://localhost:3306/my_db?connectTimeout=3000&autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useAffectedRows=true
username: root
# jasypt默認(rèn)使用ENC()來(lái)標(biāo)識(shí)加密锋喜,加載配置的時(shí)候檢測(cè)到ENC()即會(huì)自動(dòng)解密,也可以自定義前綴和后綴
password: ENC(l52ID0rzCBJry26FhJuovonC1MvGcG8Y)
- 通過(guò)命令行設(shè)置jvm參數(shù)配置密鑰(服務(wù)器上可以配置成環(huán)境變量的方式)
java -Djasypt.encryptor.password=yuexinprod
- 服務(wù)器上可以配置成環(huán)境變量(如:JASYPT_PASSWORD )
java -Djasypt.encryptor.password=${JASYPT_PASSWORD}
- 在idea中設(shè)置jvm參數(shù)配置密鑰
-Djasypt.encryptor.password=yuexinprod
jvm配置
啟動(dòng)程序 系統(tǒng)會(huì)自動(dòng)解密。
如果啟動(dòng)后有如下報(bào)錯(cuò),檢查jvm參數(shù)中配置的密鑰和加密時(shí)設(shè)置的值是否一致或yml文件中參數(shù)格式是否正確。
Failed to bind properties under 'spring.datasource.password' to java.lang.String: Reason: Failed to bind properties under 'spring.datasource.password' to java.lang.String
報(bào)錯(cuò)信息