spring-boot项目使用ulisesbocchio对配置文件敏感信息加密
參考文獻github官網地址:https://github.com/ulisesbocchio/jasypt-spring-boot
1、添加依賴:
maven:
<dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.2</version> </dependency>低版本依賴
<dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>2.1.2</version> </dependency>gradle依賴:
implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.2'2、自定義加密鹽值,生成加密結果?
public static void main(String[] args) {BasicTextEncryptor encryptor = new BasicTextEncryptor();// application.properties, jasypt.encryptor.password 加密鹽值encryptor.setPassword("qwera@12345");// 加密數據庫連接地址System.out.println(encryptor.encrypt("jdbc:mysql://127.0.0.1:3306/mysql?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=UTC"));// 加密數據庫連接用戶名System.out.println(encryptor.encrypt("user"));// 加密數據庫連接密碼System.out.println(encryptor.encrypt("123456"));// 加密ip地址System.out.println(encryptor.encrypt("127.0.0.1")); }?運行之后得到以下加密結果:
SXyQdsRMPeCNvzqG+9CHCfBJ8I5WG0FK3QK/oh3Ty+9cD2x46TFx6qeil9i8+HJM+v6aJPF5+cPfXNcK9RZz8pj5vETgOLv6WN41zTnXmsx4MrtGbjmVpDOnVKtGh3aR8BRM7bH1/CN2letqQYpkbAFUErtEkrrVNhRwN9whalZmv4MZP2rBmyeVYaDqEBuEDcV4u2Kbl0bdAN4Tn5LRzu+7sDOP37nDTTwdOTOdU3gYGe3OodLSuw== 4FEc3689+yRuKK0uKSzuwQ== 0T6wU363Jnd0wC2q7LittA== S6Ndyo6uDMMwwzHiiLjPW+sArf+r9qsA3、將結果敏感信息替換成加密后的結果
?加密結果需要將ENC(*)包含加密值,Spring加載時會自動解析
jasypt:encryptor:# 加密鹽值 必須和生成的鹽值一樣password: qwera@12345# 加密算法設置 3.0.0 以后需要加上下面兩個配置# algorithm: PBEWithMD5AndDES# iv-generator-classname: org.jasypt.iv.NoIvGenerator spring:profiles:active: localapplication:name: demodatasource:url: ENC(SXyQdsRMPeCNvzqG+9CHCfBJ8I5WG0FK3QK/oh3Ty+9cD2x46TFx6qeil9i8+HJM+v6aJPF5+cPfXNcK9RZz8pj5vETgOLv6WN41zTnXmsx4MrtGbjmVpDOnVKtGh3aR8BRM7bH1/CN2letqQYpkbAFUErtEkrrVNhRwN9whalZmv4MZP2rBmyeVYaDqEBuEDcV4u2Kbl0bdAN4Tn5LRzu+7sDOP37nDTTwdOTOdU3gYGe3OodLSuw==)username: ENC(4FEc3689+yRuKK0uKSzuwQ==)password: ENC(0T6wU363Jnd0wC2q7LittA==)driver-class-name: com.mysql.cj.jdbc.Driver4、加密結果與加密鹽值隔離
項目加密配置到這里也就基本完成了,但是為了保證加密數據和加密鹽值數據隔離還需采取進一步措施,以確保數據的安全性
注釋:加密鹽值不應該直接放在代碼中,容易造成開發人員泄露數據安全性
Windows啟動java虛擬機配置VM options參數,我這里默認是配置3.0.0以上的jar包,如版本低可將后面參數移除掉
配置了虛擬機啟動參數,其實和配置yml是一樣的,也同樣會加載到spring配置文件中,配置成功(此時可將配置文件的加密鹽值配置刪除掉),
啟動Spring同樣會成功連接到數據庫。
?服務器中配置,同理將java啟動虛擬機參數新增配置,這樣我們密碼鹽值就放在了服務器中,就不會造成加密鹽值泄漏了
JAVA_OPTS="-Djasypt.encryptor.password=qwera@12345 -Djasypt.encryptor.algorithm=PBEWithMD5AndDES -Djasypt.encryptor.iv-generator-classname=org.jasypt.iv.NoIvGenerator"
?
到這里,配置加密敏感信息應該才算完成。
總結
以上是生活随笔為你收集整理的spring-boot项目使用ulisesbocchio对配置文件敏感信息加密的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Unity3D游戏开发之仿仙剑奇侠传角色
- 下一篇: 机器视觉毕业设计 深度学习驾驶人脸疲劳检