springboot使用jasyptdatasource密碼加密

  • 2019 年 10 月 8 日
  • 筆記

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

結果如下