Sharding-JDBC使用jasypt3.0及以上版本加密資料庫連線密碼

任餘濤發表於2020-12-21

本文中介紹的是基於Sharding-JDBC 4.0和jasypt 3.0及其以上版本對資料庫連線密碼進行加密操作

引入依賴

專案的pom.xml中引入maven依賴

<dependency>
    <groupId>org.apache.shardingsphere</groupId>
    <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
    <version>4.0.0-RC3</version>
</dependency>
<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>3.0.3</version>
</dependency>
                

生成密文

首先通過jasypt-1.9.3.jar生成密文

PS C:\Users\Tuhuadmin\.m2\repository\org\jasypt\jasypt\1.9.3>  java -cp .\jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="root" password=fulfillForward algorithm=PBEWithMD5AndDES

命令列下執行該命令,列印如下

----ENVIRONMENT-----------------

Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 11.0.2+7-LTS

----ARGUMENTS-------------------

input: root
password: fulfillForward
algorithm: PBEWithMD5AndDES

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

9v+20XzVBiBBocheB7PWwA==

OUTPUT列印的部分就是加密後的密文。

jasypt需要設定用於加密明文的金鑰password,它會對input內容加密。解釋下引數:

引數 說明

input

明文密碼
password 加密的鹽值
algorithm 加密策略,對稱加密

 

 

 

 

 

 

配置檔案中設定密文

上一步中獲得到了連線資料庫的密碼密文,開啟應用的配置檔案application.properties,修改資料庫連線密碼為如下格式:

spring.shardingsphere.datasource.ds0.password=ENC(9v+20XzVBiBBocheB7PWwA==)

通過 ENC(密文) 的方式,在程式中獲取到的spring.shardingsphere.datasource.ds0.password會自動轉換成明文內容(root)

同時需在配置檔案application.properties中新增加密鹽值和加密策略

jasypt.encryptor.password=fulfillForward
jasypt.encryptor.algorithm=PBEWithMD5AndDES
jasypt.encryptor.iv-generator-classname=org.jasypt.iv.NoIvGenerator

到此通過Sharding-JDBC做分庫分表,資料庫連線密碼加密就完成了。

參考連線:https://github.com/ulisesbocchio/jasypt-spring-boot#update-11242019-version-300-release-includes

本人隨筆,在此記錄,如有問題可微信討論,微訊號:429532901。

 

相關文章