1. 程式人生 > 程式設計 >jasypt 整合SpringBoot 資料庫密碼加密操作

jasypt 整合SpringBoot 資料庫密碼加密操作

昨天看到一片文章,說是某某旗下酒店資料庫因為程式設計師不小心,把資料庫明文密碼上傳到了GitHub上,導致酒店資料註冊資料、入住資訊,開房記錄被下載倒賣的訊息。

作為程式設計師,開發的時候為了簡單,賬戶明明都設定很簡單,基本上資料庫密碼都是明文的,沒做什麼操作,至少我待過的公司都是這樣,無論是測試環境還是線上環境,想想,這個也是一大安全隱患,在此,趁現在不忙,做些基於springboot的資料庫密碼加密。

1、pom.xml新增jar包(不同jdk選擇不同的版本):

<!-- jdk8 版本 整合jasypt對資料庫密碼加密 -->
<dependency>
  <groupId>com.github.ulisesbocchio</groupId>
  <artifactId>jasypt-spring-boot-starter</artifactId>
  <version>1.14</version>
</dependency>
<!-- jdk7版本-->
<dependency>
  <groupId>com.github.ulisesbocchio</groupId>
  <artifactId>jasypt-spring-boot-starter</artifactId>
   <version>1.5-java7</version>
</dependency>
<!-- jdk6版本-->
<dependency>
  <groupId>com.github.ulisesbocchio</groupId>
  <artifactId>jasypt-spring-boot-starter</artifactId>
   <version>1.5-java6</version>
</dependency>

2、window 視窗開啟命令視窗,輸入命令:

java -cp D:\mavenspace\repository\org\jasypt\jasypt\1.9.2\jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="123456" password=allanpassword algorithm=PBEWithMD5AndDES

java –cp jar包所在路徑\jar包 org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input=”你的資料庫密碼” password=加密欄位,隨意設定algorithm=預設PBEWithMD5AndDES加密

引數說明:

input =資料庫連結密碼

password=加密欄位,隨意設定(配置檔案中需要新增此密碼,相當於約定密碼)

algorithm= 演算法,預設PBEWithMD5AndDES

執行命令後如圖:

jasypt 整合SpringBoot 資料庫密碼加密操作

----OUTPUT----------------------

Ekgkm+TzSmf7w7bcr90gMV6MAwj0waW+

OUTPUT 就是加密後的密碼,在配置專案密碼時結合ENC() 使用,如下圖:

3、專案中新增配置(以springboot為例),如圖:

jasypt 整合SpringBoot 資料庫密碼加密操作

# 資料庫密碼加密配置

jasypt:
 encryptor:
password: allanpassword
spring MySQL密碼寫法:
password: ENC(Ekgkm+TzSmf7w7bcr90gMV6MAwj0waW+)

4、springboot啟動類添加註解使其生效:

jasypt 整合SpringBoot 資料庫密碼加密操作

以上配置完成,啟動專案執行,查詢資料庫,成功!

補充知識:SpringBoot(Spring)使用jasypt處理加密問題

前景:為了防止配置檔案裡面的明文密碼洩露

1.引入依賴:(針對SpringBoot的)

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

2.配置檔案配置引數

#這裡可以理解成是加解密的時候使用的金鑰 (也可以考慮多配置認證資訊jasypt.encryptor.algorithm)

jasypt.encryptor.password=youPassword

3.編寫測試類得到加密密碼

@Autowired 
StringEncryptor stringEncryptor; 
 
@Test 
public void encryptPwd() { 
  String result = stringEncryptor.encrypt("yourPassword"); 
  System.out.println(result);  
} 

4.修改配置檔案裡面的明文密碼

spring.datasource.druid.first.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.druid.first.url=
spring.datasource.druid.first.username=root

spring.datasource.druid.first.password=ENC(AfHowGWt0tQ6LXRoJ7GkAlImTKkfDg1Y1Er)

5.通過命令列執行 jasypt-1.9.2.jar 包命令來加密解密

1.在jar包所在目錄開啟命令列,執行如下加密命令:

java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="明文" password=jasypt配置密碼 algorithm=PBEWithMD5AndDES

2. 使用剛才加密出來的結果進行解密,執行如下解密命令:

java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI input="加密後的密文" password=jasypt配置密碼 algorithm=PBEWithMD5AndD

以上這篇jasypt 整合SpringBoot 資料庫密碼加密操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。