SpringBoot進階教程(六十三)Jasypt配置文件加密


數據庫密碼直接明文寫在配置中,對安全來說,是一個很大的挑戰。一旦密碼泄漏,將會帶來很大的安全隱患。尤其在一些企業對安全性要求很高,因此我們就考慮如何對密碼進行加密。本文着重介紹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 可以在本地運行中加參數。如下圖:

SpringBoot進階教程(六十三)Jasypt配置文件加密

或是在項目部署的時候使用命令傳入salt(鹽)值。

打包時隱藏jasypt.encryptor.password,就需要打包時maven命令增加參數 clean package -Djasypt.encryptor.password=Bt%XJ^n1j8mz 。不加參數的話打包就會報錯。如下圖:

SpringBoot進階教程(六十三)Jasypt配置文件加密

然后在部署時添加參數 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/
關於作者:專注於基礎平台的項目開發。如有問題或建議,請多多賜教!
版權聲明:本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。
特此聲明:所有評論和私信都會在第一時間回復。也歡迎園子的大大們指正錯誤,共同進步。或者直接私信
聲援博主:如果您覺得文章對您有幫助,可以點擊文章右下角推薦一下。您的鼓勵是作者堅持原創和持續寫作的最大動力!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM