springboot使用jasyptdatasource密碼加密
maven依賴
<!-- 加密工具 -->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>1.8</version>
</dependency>
配置加密引數(可以理解為加密的salt)
jasypt:
encryptor:
password: 123456(這個可以隨便設定的,每次設定時資料庫的接連驅動要是明文(也就是不加密的,否則執行起來報錯))
寫一個測試方法,這裡直接在單元測試裡面來實現給密碼加密,得到字串密碼
@Autowired StringEncryptor stringEncryptor;
@Test public void encryptPwd() {
//呼叫加密方法
String result = stringEncryptor.encrypt("yourpassword"); System.out.println("==================");
System.out.println(result);
//呼叫解密方法
String test=stringEncryptor.decrypt(result)
System.out.println(test);
System.out.println("==================");
}
把得到的密文寫到需要使用到的地方,加密後的字串需要放到ENC裡面,格式如下:
spring:
datasource:
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false
username: root
password: ENC(4TyrSSgQd2DCHnXVwkdKMQ==)
driver-class-name: com.mysql.jdbc.Driver
通過命令列執行 jasypt-1.9.2.jar 包命令來加密解密:
在jar包所在目錄開啟命令列,執行如下加密命令:
java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="root" password=security algorithm=PBEWithMD5AndDES
這裡input輸入的可以對資料庫的使用者名稱進行加密也可以是資料庫的密碼進行加密
執行結果如下(這種加密每次得到的密文都是不一樣的)
使用剛才加密出來的結果進行解密,執行如下解密命令:
java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI input="i00VogiiZ1FpZR9McY7XNw==" password=security algorithm=PBEWithMD5AndDES
結果如下