使用過 SpringBoot 配置文件的朋友都知道,資源文件中的內(nèi)容通常情況下是明文顯示,安全性就比較低一些。打開 application.properties 或 application.yml晤斩,比如 mysql 登陸密碼餐弱,redis 登陸密碼以及第三方的密鑰等等一覽無余宴霸,這里介紹一個加解密組件,提高一些屬性配置的安全性膏蚓。
jasypt 由一個國外大神寫的一個 springboot 下的工具包瓢谢。Git地址:https://github.com/ulisesbocchio/jasypt-spring-boot
pom文件中增加依賴:
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
application.yml文件中增加jasypt的秘鑰(該秘鑰自定義的):
# 加密所需的salt(鹽)
jasypt.encryptor.password=G0CvDz7oJn6
# 默認加密方式PBEWithMD5AndDES,可以更改為PBEWithMD5AndTripleDES
# jasypt.encryptor.algorithm=PBEWithMD5AndDES
生成要加密的字符串:
- 將數(shù)據(jù)庫的用戶名和密碼進行加密
public static void main(String[] args) {
BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
//加密所需的salt(鹽)
textEncryptor.setPassword("G0CvDz7oJn6");
//要加密的數(shù)據(jù)(數(shù)據(jù)庫的用戶名或密碼)
String username = textEncryptor.encrypt("root");
String password = textEncryptor.encrypt("root123");
System.out.println("username:" + username);
System.out.println("password:" + password);
}
- 輸出信息為:
username:i8QgEN4uOy2E1rHzrpSTYA==
password:6eaMh/RX5oXUVca9ignvtg==
配置 properties 文件
- 將生成的加密串配置ENC(加密串)到application.properties中
# 加密所需的salt(鹽)
jasypt.encryptor.password=G0CvDz7oJn6
# 默認加密方式PBEWithMD5AndDES,可以更改為PBEWithMD5AndTripleDES
# jasypt.encryptor.algorithm=PBEWithMD5AndDES
spring.datasource.username=ENC(6eaMh/RX5oXUVca9ignvtg==)
spring.datasource.password=ENC(6eaMh/RX5oXUVca9ignvtg==)
參考: