使用jasypt在springboot中加密敏感信息
作者:牧云2800
Jasypt是一个简化Java加密操作的轻量级库,支持与Spring Boot深度集成,通过ENC(密文)格式实现配置文件的自动加解密,本文就来介绍一下springboot jasypt 加密敏感,感兴趣的可以了解一下
1.简介
jasypt(Java Simplified Encryption)是一个轻量级Java加密库,专为简化应用程序加密操作而设计,通过易用API帮助开发者无需深入密码学知识即可实现敏感数据保护。其核心特性包括:与Spring Boot深度集成实现配置属性的自动加解密(使用ENC(密文)格式即可自动解密);支持多种主流算法如PBEWithMD5AndDES和默认的PBEWITHHMACSHA512ANDAES_256;采用分离式密钥管理机制,要求加密密钥必须通过环境变量或命令行动态注入,杜绝密钥泄露风险;提供完善的工具链如Maven插件支持命令行加密、配置文件动态解密代理及自定义盐生成器/IV向量等参数配置。典型应用场景涵盖保护Spring Boot配置文件中的数据库密码/API密钥、实现日志/数据库的PII信息脱敏,以及满足GDPR/等保2.0等合规要求,其通过AES-256等标准算法结合随机盐与迭代哈希,在密钥妥善保管时可提供极高安全性保障。
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 执行加密命令
在项目目录执行:
mvn jasypt:encrypt-value \ -Djasypt.encryptor.password="your-password" \ -Djasypt.plugin.value="原始敏感值"
控制台输出加密结果(如ENC(In+7esX42WEldd+Wzr4FaI2H2w6d0jXMWfUM1m6HbR+43kV0J7Qq9uXYeGqQqJh6)),复制备用。
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 启动应用
通过环境变量传递密钥:
export JASYPT_ENCRYPTOR_PASSWORD=your-password java -jar app.jar
IDEA中环境变量使用如下方式传入:

或使用命令行参数:
java -jar app.jar --jasypt.encryptor.password=your-password
4.注意事项
- 密钥安全:切勿将加密密钥写入配置文件或代码
- 密钥传递方式:
- 环境变量:export JASYPT_ENCRYPTOR_PASSWORD=密钥
- 命令行参数:java -jar app.jar --jasypt.encryptor.password=密钥
- 加解密算法需保持一致
5.进阶配置参数
| 参数 | 必需 | 默认值 |
|---|---|---|
| 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.小结
通过jasypt可实现:
- 使用Maven插件加密敏感信息
- Spring Boot自动解密ENC()包裹的配置值
- 通过环境变量/命令行安全传递密钥
- 支持多种加密算法和高级配置
完整方案确保敏感信息(如API密钥、数据库密码)不在配置文件中明文暴露。
到此这篇关于使用jasypt在springboot中加密敏感信息的文章就介绍到这了,更多相关springboot jasypt 加密敏感 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
