SpringBoot使用Jasypt配置項加密

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

對於一些安全性要求很是高的企業,是不容許在配置文件中配置明文密碼的。由於若是在配置文件明文密碼,就有可能存在被泄露的問題。如開發人員使用、嚴重的點的話就是被***盜取。java

 

0x01:引入依賴mysql

在pom.xml文件中引入以下依賴git

 <dependency>
        <groupId>com.github.ulisesbocchio</groupId>
        <artifactId>jasypt-spring-boot-starter</artifactId>
       <version>3.0.3</version>
</dependency>

 

0x02:對於須要加密的配置項進行加密github

下面與數據的用戶名和密碼爲例說明spring

public static void main(String[] args) {
        BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
        //加密所需的salt(鹽)
        textEncryptor.setPassword("Bt%XJ^n1j8mz");
        //要加密的數據(數據庫的用戶名或密碼)
        String username = textEncryptor.encrypt("root");
        String password = textEncryptor.encrypt("root123456");
        System.out.println("username: " + username);
        System.out.println("password:" + password);
    }

運行以上代碼,將用戶名和密碼加密對應生成的結果複製下來,後面會用到。sql

 

0x03:application.properities配置文件配置shell

#數據庫相關配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/jasypt?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

 

解密祕鑰 jasypt.encryptor.password 也在配置文件裏,別人拿到服務器上部署配置文件後,是否是也很輕鬆的就能夠解開這個密碼了?數據庫

  • 開發環境:爲了防止salt(鹽)泄露,反解密出密碼。刪除掉application.properties中的 jasypt.encryptor.password ,而後在IDE的運行參數中添加 -Djasypt.encryptor.password=Bt%XJ^n1j8mz安全

  • 生成部署:直接在啓動的shell腳本中添加-Djasypt.encryptor.password=Bt%XJ^n1j8mz服務器

java -jar -Djasypt.encryptor.password=Bt%XJ^n1j8mz jasyptDemo-0.0.1-SNAPSHOT.jar
相關文章
相關標籤/搜索