SpringBoot使用jasypt加解密密碼

2020-10-18 12:00:32

jasypt是一個通用的加解密庫,我們可以使用它在組態檔中對資料庫密碼進行加密,以確保其安全性。

1、注入依賴

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

2、組態檔

#以資料庫密碼加密為例
## 資料來源設定
spring.datasource.url=jdbc:mysql://lochost:3306/jasypt?characterEncoding=utf8
spring.datasource.username=root
#Fddt+VfcW5+j5lAbuOXxPB3mGb0iBLLe 是採用jasypt進行加密以後生成的密文
spring.datasource.password=ENC(Fddt+VfcW5+j5lAbuOXxPB3mGb0iBLLe)
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

#jasypt加密的密匙
jasypt.encryptor.password=abcderf(這個是自己設定的)

那麼如何得到這個密文呢?
1、win+r cmd開啟命令視窗 在你的maven庫中找到 jasypt-1.9.2.jar 包
執行下面的命令

java -cp D:\Maven\repository\org\jasypt\jasypt\1.9.2\jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="金鑰(abcderf)" password=root(加密的密碼) algorithm=PBEWithMD5AndDES

然後複製密文即可
在這裡插入圖片描述
2、程式碼生成(這種方法沒有使用過 參考連結:https://www.cnblogs.com/yangzhilong/p/10881589.html

import org.jasypt.util.text.BasicTextEncryptor;

public class Test {
	public static void main(String[] args) {
	
        BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
        //加密所需的salt(鹽)
        textEncryptor.setPassword("PBEWithMD5AndDES");
        //要加密的資料(資料庫的使用者名稱或密碼)
        String username = textEncryptor.encrypt("root");
        String password = textEncryptor.encrypt("root");
        System.out.println("username:"+username);
        System.out.println("password:"+password);
    }
}