springboot3 使用 jasypt 加密配置文件的使用步驟
在線密碼生成器 : Most Reliable Online Password Generator | Free and Secure (getmypassword.com)
官網(wǎng) : jasypt
使用步驟 :
1. 添加依賴 :
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.4</version>
</dependency>2.配置加密密碼
Jasypt需要一個密碼來進(jìn)行加密和解密操作。可以通過以下幾種方式配置這個密碼:
在配置文件中指定 :在你的application.properties或application.yml配置文件中,添加jasypt.encryptor.password配置項,并設(shè)置你的密碼。例如:
# application.properties jasypt.encryptor.password=your_encryption_password
或者,在application.yml中:
jasypt:
encryptor:
password: your_encryption_password然而,將密碼直接寫在配置文件中可能存在安全風(fēng)險。因此,更推薦的做法是通過啟動參數(shù)或環(huán)境變量來傳遞這個密碼。
- 通過啟動參數(shù)指定:在啟動應(yīng)用程序時,可以通過
-Djasypt.encryptor.password=your_encryption_password參數(shù)來指定加密密碼。
使用環(huán)境變量:在某些情況下,使用環(huán)境變量來存儲敏感信息(如加密密碼)可能更為安全。具體方法取決于你的應(yīng)用程序部署環(huán)境。
3. 加密敏感信息
在配置加密密碼后,你可以使用Jasypt提供的工具或API來加密你的敏感信息。加密后的信息將以密文形式存儲。
使用Jasypt CLI工具:Jasypt提供了一個命令行界面(CLI)工具,允許你在命令行中加密和解密字符串。你需要下載Jasypt的jar包,并在命令行中運行相應(yīng)的命令。
Jasypt JAR 文件下載地址 :
生成密鑰
使用 Jasypt 提供的命令行工具生成密鑰。
java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="your-strong-password" password="your-secret-key" algorithm=PBEWithMD5AndTripleDES
input:你要加密的字符串,例如數(shù)據(jù)庫連接字符串、用戶名、密碼等。password:用于加密的密鑰。algorithm:加密算法,推薦使用PBEWITHHMACSHA512ANDAES_256。
使用Jasypt API :在你的Java應(yīng)用程序中,你可以通過注入StringEncryptor接口的實現(xiàn)類來編程方式加密和解密字符串。這通常在你的Spring Boot應(yīng)用程序中通過自動裝配完成。
/**
* 加密控制器
*
* @author 魯子狄
**/
@SaIgnore
@RequiredArgsConstructor
@RestController
@RequestMapping("/jasypt")
public class JasyptController {
private final StringEncryptor stringEncryptor;
/**
* 加密
*
* @param text 明文
* @return 密文
*/
@RequestMapping("/encrypt")
public String encrypt(String text) {
return stringEncryptor.encrypt(text);
}
/**
* 解密
*
* @param text 密文
* @return 明文
*/
@RequestMapping("/decrypt")
public String decrypt(String text) {
return stringEncryptor.decrypt(text);
}
}4. 將加密信息存儲到配置文件中
密鑰格式如下:
ENC(your-encrypted-string)
加密敏感信息后,你需要將這些加密后的信息存儲到配置文件中。在Jasypt中,加密后的信息通常以ENC(...)的形式出現(xiàn),括號內(nèi)是加密后的密文。例如:
username: ENC(aHApYu/25KrMl/q6Mr7X+0jYRC8E52V62ciUqtzDelELeHUwUrgGDl1oQJVUeXCt) password: ENC(A0bDpXcWODFJ7JXiDNVKU5n49RSLM4Q3e5ZtS5T+fTY54S12zazVyxHhbV49OzY7)
5.應(yīng)用程序啟動時自動解密
當(dāng)你的Spring Boot應(yīng)用程序啟動時,Jasypt會自動檢測配置文件中的ENC(...)字符串,并使用你配置的加密密碼來解密這些字符串。解密后的明文將用于應(yīng)用程序的配置中。
注意: 如過用環(huán)境變量傳參,本地啟動時需要傳入環(huán)境變量,jar包運行也一樣
-Djasypt.encryptor.password=your-encryptor-password
本地

jar包命令 :
java -Djasypt.encryptor.password=your-encryptor-password -jar your-jar
| 配置參數(shù) | 描述 | 示例 |
|---|---|---|
jaspyt.encryptor.password | 加密器的密碼,用于解密屬性 | jaspyt.encryptor.password=mySecretPassword |
jaspyt.encryptor.algorithm | 加密算法的名稱 | jaspyt.encryptor.algorithm=PBEWithMD5AndDES |
jaspyt.encryptor.keyObtentionIterations | 獲取密鑰時使用的迭代次數(shù) | jaspyt.encryptor.keyObtentionIterations=1000 |
jaspyt.encryptor.poolSize | 加密池的大?。ㄈ绻褂昧顺鼗用芷鳎?/td> | jaspyt.encryptor.poolSize=1 |
jaspyt.encryptor.providerName | 加密提供者的名稱(如JCE提供者) | jaspyt.encryptor.providerName=SunJCE |
jaspyt.encryptor.saltGeneratorClassName | 鹽生成器的類名 | jaspyt.encryptor.saltGeneratorClassName=org.jasypt.salt.RandomSaltGenerator |
jaspyt.encryptor.ivGeneratorClassName | 初始向量生成器的類名 | jaspyt.encryptor.ivGeneratorClassName=org.jasypt.iv.NoIvGenerator |
jaspyt.encryptor.stringOutputType | 加密字符串的輸出類型(如base64) | jaspyt.encryptor.stringOutputType=base64 |
jaspyt.encryptor.property.prefix | 加密屬性前綴,用于識別加密屬性 | jaspyt.encryptor.property.prefix=ENC( |
jaspyt.encryptor.property.suffix | 加密屬性后綴,用于識別加密屬性 | jaspyt.encryptor.property.suffix=) |
jaspyt.encryptor.proxyPropertySources | 是否通過代理截取屬性值以進(jìn)行解密 | jaspyt.encryptor.proxyPropertySources=true |
支持的加密算法
Jasypt支持多種加密算法以保護(hù)敏感數(shù)據(jù)。以下是Jasypt支持的一些常見加密算法:
| 加密算法名稱 | 描述 |
|---|---|
| PBEWithMD5AndDES | 基于密碼的加密(PBE),使用MD5作為散列函數(shù)和DES作為加密算法。這是一種較舊的加密算法,但在某些舊系統(tǒng)中可能仍在使用 |
| PBEWithMD5AndTripleDES | 與PBEWithMD5AndDES類似,但使用TripleDES作為加密算法,提供了更強(qiáng)的安全性。 |
| PBEWithHMACSHA512ANDAES_256 | 使用HMAC-SHA-512散列函數(shù)和AES-256加密算法的組合,提供了非常高的安全性。這是Jasypt較新版本中推薦的加密算法之一(默認(rèn)值) |
| AES | 高級加密標(biāo)準(zhǔn)(AES),是一種廣泛使用的對稱加密算法。Jasypt支持不同長度的AES密鑰,如AES-128、AES-192和AES-256 |
| RSA | Rivest-Shamir-Adleman(RSA)算法,是一種非對稱加密算法。它使用一對密鑰:公鑰用于加密數(shù)據(jù),私鑰用于解密數(shù)據(jù) |
到此這篇關(guān)于springboot3 使用 jasypt 加密配置文件的文章就介紹到這了,更多相關(guān)springboot3 jasypt 加密配置文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
spring boot 下對JSON返回值去除null和空字段操作
這篇文章主要介紹了spring boot 下對JSON返回值去除null和空字段操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10
記一次springboot配置redis項目啟動時的一個奇怪的錯誤
這篇文章主要介紹了spring?boot配置redis項目啟動時的一個奇怪的錯誤,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02

