使用jasypt在springboot中加密敏感信息
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 加密敏感 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
SpringBoot+Docker+IDEA实现一键构建+推送、运行、同镜像多容器启动
这篇文章主要介绍了SpringBoot+Docker+IDEA实现一键构建+推送、运行、同镜像多容器启动,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2021-04-04
Spring Cache 整合 Redis 实现高效缓存的方法
SpringCache是Spring框架的缓存抽象层,通过注解简化缓存逻辑,支持Caffeine、EhCache、Redis等实现,接下来通过本文给大家介绍Spring Cache整合Redis实现高效缓存的方法,感兴趣的朋友跟随小编一起看看吧2025-08-08
mybaties plus实体类设置typeHandler不生效的解决
这篇文章主要介绍了mybaties plus实体类设置typeHandler不生效的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-08-08


最新评论