資料庫密碼直接明文寫在配置中,對安全來說,是一個很大的挑戰,一旦密碼泄漏,將會帶來很大的安全隱患,尤其在一些企業對安全性要求很高,因此我們就考慮如何對密碼進行加密,本文著重介紹Jasypt對SpringBoot組態檔加密,
v引入maven
<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>3.0.3</version> </dependency>
v生成加密串
將連接資料庫的用戶名和密碼進行加密
public static void main(String[] args) { BasicTextEncryptor textEncryptor = new BasicTextEncryptor(); //加密所需的salt(鹽) textEncryptor.setPassword("Bt%XJ^n1j8mz"); //要加密的資料(資料庫的用戶名或密碼) String username = textEncryptor.encrypt("toutou"); String password = textEncryptor.encrypt("demo123456"); System.out.println("username:"+username); System.out.println("password:"+password); }
輸出結果如下:

將用戶名和密碼加密對應生成的結果復制下來,后面會用到,
v配置properties
將生成的加密串配置ENC(加密串)到application.properties中
#資料庫相關配置 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mytest?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2b8 # 加密所需的salt(鹽) #jasypt.encryptor.password=Bt%XJ^n1j8mz # 默認加密方式PBEWithMD5AndDES,可以更改為PBEWithMD5AndTripleDES #jasypt.encryptor.algorithm=PBEWithMD5AndDES spring.datasource.username=ENC(d/qt1SXvttpkiugIzTYkxg==) spring.datasource.password=ENC(rhT6VNpoRUkQYYOHAQ58V4/+fkj9CWfT) spring.datasource.max-idle=10 spring.datasource.max-wait=10000 spring.datasource.min-idle=5 spring.datasource.initial-size=5
v動態salt(鹽)值
解密秘鑰也在組態檔里頭啊,別人拿到你服務器上面的部署代碼后,不是很輕松的就可以解開這個密碼了?
為了防止salt(鹽)泄露,反解出密碼.洗掉掉application.properties中的 jasypt.encryptor.password 可以在本地運行中加引數,如下圖:

或是在專案部署的時候使用命令傳入salt(鹽)值,
打包時隱藏jasypt.encryptor.password,就需要打包時maven命令增加引數 clean package -Djasypt.encryptor.password=Bt%XJ^n1j8mz ,不加引數的話打包就會報錯,如下圖:

然后在部署時添加引數 Djasypt.encryptor.password ,
部署時完整命令: java -jar -Djasypt.encryptor.password=Bt%XJ^n1j8mz hello-0.0.1-SNAPSHOT.jar
v博客總結
資料加密,是一門歷史悠久的技術,指通過加密演算法和加密密鑰將明文轉變為密文,而解密則是通過解密演算法和解密密鑰將密文恢復為明文,它的核心是密碼學,資料加密仍是計算機系統對資訊進行保護的一種最可靠的辦法,它利用密碼技術對資訊進行加密,實作資訊隱蔽,從而起到保護資訊的安全的作用,
安全重于泰山,
v原始碼地址
https://github.com/toutouge/javademosecond/tree/master/AllSample
其他參考資料:
https://github.com/ulisesbocchio/jasypt-spring-boot
作 者:請叫我頭頭哥
出 處:http://www.cnblogs.com/toutou/
關于作者:專注于基礎平臺的專案開發,如有問題或建議,請多多賜教!
著作權宣告:本文著作權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文鏈接,
特此宣告:所有評論和私信都會在第一時間回復,也歡迎園子的大大們指正錯誤,共同進步,或者直接私信我
聲援博主:如果您覺得文章對您有幫助,可以點擊文章右下角【推薦】一下,您的鼓勵是作者堅持原創和持續寫作的最大動力!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/89873.html
標籤:Java
下一篇:第一個Mybatis
