使用jasypt在springboot中加密敏感信息
1.簡(jiǎn)介
jasypt(Java Simplified Encryption)是一個(gè)輕量級(jí)Java加密庫(kù),專為簡(jiǎn)化應(yīng)用程序加密操作而設(shè)計(jì),通過易用API幫助開發(fā)者無需深入密碼學(xué)知識(shí)即可實(shí)現(xiàn)敏感數(shù)據(jù)保護(hù)。其核心特性包括:與Spring Boot深度集成實(shí)現(xiàn)配置屬性的自動(dòng)加解密(使用ENC(密文)格式即可自動(dòng)解密);支持多種主流算法如PBEWithMD5AndDES和默認(rèn)的PBEWITHHMACSHA512ANDAES_256;采用分離式密鑰管理機(jī)制,要求加密密鑰必須通過環(huán)境變量或命令行動(dòng)態(tài)注入,杜絕密鑰泄露風(fēng)險(xiǎn);提供完善的工具鏈如Maven插件支持命令行加密、配置文件動(dòng)態(tài)解密代理及自定義鹽生成器/IV向量等參數(shù)配置。典型應(yīng)用場(chǎng)景涵蓋保護(hù)Spring Boot配置文件中的數(shù)據(jù)庫(kù)密碼/API密鑰、實(shí)現(xiàn)日志/數(shù)據(jù)庫(kù)的PII信息脫敏,以及滿足GDPR/等保2.0等合規(guī)要求,其通過AES-256等標(biāo)準(zhǔn)算法結(jié)合隨機(jī)鹽與迭代哈希,在密鑰妥善保管時(shí)可提供極高安全性保障。
項(xiàng)目地址:https://github.com/ulisesbocchio/jasypt-spring-boot
2.加密敏感信息
2.1 引入Maven加密插件
在pom.xml中添加:
<build>
<plugins>
<plugin>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-maven-plugin</artifactId>
<version>3.0.5</version>
</plugin>
</plugins>
</build>
2.2 執(zhí)行加密命令
在項(xiàng)目目錄執(zhí)行:
mvn jasypt:encrypt-value \ -Djasypt.encryptor.password="your-password" \ -Djasypt.plugin.value="原始敏感值"
控制臺(tái)輸出加密結(jié)果(如ENC(In+7esX42WEldd+Wzr4FaI2H2w6d0jXMWfUM1m6HbR+43kV0J7Qq9uXYeGqQqJh6)),復(fù)制備用。
3.在Spring Boot中使用
3.1 添加依賴
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
3.2 配置文件
在application.properties中:
apiKey=ENC(In+7esX42WEldd+Wzr4FaI2H2w6d0jXMWfUM1m6HbR+43kV0J7Qq9uXYeGqQqJh6) jasypt.encryptor.iv-generator-classname=org.jasypt.iv.NoIvGenerator jasypt.encryptor.algorithm=PBEWithMD5AndDES
3.3 Java類示例
@SpringBootApplication
public class DemoApplication implements CommandLineRunner {
@Value("${apiKey}")
private String apiKey;
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Override
public void run(String... args) {
System.out.println("apiKey = " + apiKey);
}
}
3.4 啟動(dòng)應(yīng)用
通過環(huán)境變量傳遞密鑰:
export JASYPT_ENCRYPTOR_PASSWORD=your-password java -jar app.jar
IDEA中環(huán)境變量使用如下方式傳入:

或使用命令行參數(shù):
java -jar app.jar --jasypt.encryptor.password=your-password
4.注意事項(xiàng)
- 密鑰安全:切勿將加密密鑰寫入配置文件或代碼
- 密鑰傳遞方式:
- 環(huán)境變量:export JASYPT_ENCRYPTOR_PASSWORD=密鑰
- 命令行參數(shù):java -jar app.jar --jasypt.encryptor.password=密鑰
- 加解密算法需保持一致
5.進(jìn)階配置參數(shù)
| 參數(shù) | 必需 | 默認(rèn)值 |
|---|---|---|
| jasypt.encryptor.password | 是 | - |
| jasypt.encryptor.algorithm | 否 | PBEWITHHMACSHA512ANDAES_256 |
| jasypt.encryptor.key-obtention-iterations | 否 | 1000 |
| jasypt.encryptor.pool-size | 否 | 1 |
| jasypt.encryptor.provider-name | 否 | SunJCE |
| jasypt.encryptor.provider-class-name | 否 | null |
| jasypt.encryptor.salt-generator-classname | 否 | org.jasypt.salt.RandomSaltGenerator |
| jasypt.encryptor.iv-generator-classname | 否 | org.jasypt.iv.RandomIvGenerator |
| jasypt.encryptor.string-output-type | 否 | base64 |
| jasypt.encryptor.proxy-property-sources | 否 | false |
| jasypt.encryptor.skip-property-sources | 否 | empty list |
6.小結(jié)
通過jasypt可實(shí)現(xiàn):
- 使用Maven插件加密敏感信息
- Spring Boot自動(dòng)解密ENC()包裹的配置值
- 通過環(huán)境變量/命令行安全傳遞密鑰
- 支持多種加密算法和高級(jí)配置
完整方案確保敏感信息(如API密鑰、數(shù)據(jù)庫(kù)密碼)不在配置文件中明文暴露。
到此這篇關(guān)于使用jasypt在springboot中加密敏感信息的文章就介紹到這了,更多相關(guān)springboot jasypt 加密敏感 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot3使用Jasypt實(shí)現(xiàn)配置文件信息加密的方法
- SpringBoot3使用Jasypt加密數(shù)據(jù)庫(kù)用戶名、密碼等敏感信息
- JAVA(SpringBoot)集成Jasypt進(jìn)行加密、解密功能
- SpringBoot整合jasypt加密配置文件敏感信息
- SpringBoot集成Jasypt敏感信息加密的操作方法
- SpringBoot整合Jasypt實(shí)現(xiàn)配置加密的步驟詳解
- jasypt 集成SpringBoot 數(shù)據(jù)庫(kù)密碼加密操作
- SpringBoot利用jasypt實(shí)現(xiàn)配置文件加密的完整指南
相關(guān)文章
SpringBoot項(xiàng)目中Maven剔除無用Jar引用的最佳實(shí)踐
在?Spring?Boot?項(xiàng)目開發(fā)中,Maven?是最常用的構(gòu)建工具之一,通過?Maven,我們可以輕松地管理項(xiàng)目所需的依賴,而,隨著項(xiàng)目的復(fù)雜化,無用的?Jar?包引用可能會(huì)逐漸增多,本文旨在詳細(xì)解析如何在?Spring?Boot?項(xiàng)目中剔除無用的?Jar?引用,需要的朋友可以參考下2025-01-01
SpringBoot打War包上傳到阿里云的LINUX服務(wù)器的操作方法
這篇文章主要介紹了SpringBoot打War包上傳到阿里云的LINUX服務(wù)器,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02
解決idea報(bào)錯(cuò) Connot resolve column 的問題
這篇文章主要介紹了解決idea報(bào)錯(cuò) Connot resolve column 的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-02-02
Java?SpringBoot內(nèi)存泄漏問題與解決過程
這篇文章討論了在Java?Spring?Boot應(yīng)用中高并發(fā)場(chǎng)景下遇到的內(nèi)存泄漏問題,通過對(duì)日志分析、監(jiān)控工具使用和代碼審查,定位了內(nèi)存泄漏的根本原因,并提出了優(yōu)化代碼和使用監(jiān)控工具的解決方案,最后,通過自動(dòng)化測(cè)試和壓力測(cè)試驗(yàn)證了解決方案的有效性2025-11-11
Mybatis批量插入數(shù)據(jù)的兩種方式總結(jié)與對(duì)比
批量插入功能是我們?nèi)粘9ぷ髦斜容^常見的業(yè)務(wù)功能之一,下面這篇文章主要給大家介紹了關(guān)于Mybatis批量插入數(shù)據(jù)的兩種方式總結(jié)與對(duì)比的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01
解決java文件流處理異常 mark/reset not supported問題
這篇文章主要介紹了解決java文件流處理異常 mark/reset not supported問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-10-10

