使用jasypt在springboot中加密敏感信息

 更新时间:2026年02月07日 08:28:27   作者:牧云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等标准算法结合随机盐与迭代哈希,在密钥妥善保管时可提供极高安全性保障。

项目地址: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 执行加密命令

在项目目录执行:

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.algorithmPBEWITHHMACSHA512ANDAES_256
jasypt.encryptor.key-obtention-iterations1000
jasypt.encryptor.pool-size1
jasypt.encryptor.provider-nameSunJCE
jasypt.encryptor.provider-class-namenull
jasypt.encryptor.salt-generator-classnameorg.jasypt.salt.RandomSaltGenerator
jasypt.encryptor.iv-generator-classnameorg.jasypt.iv.RandomIvGenerator
jasypt.encryptor.string-output-typebase64
jasypt.encryptor.proxy-property-sourcesfalse
jasypt.encryptor.skip-property-sourcesempty list

6.小结

通过jasypt可实现:

  1. 使用Maven插件加密敏感信息
  2. Spring Boot自动解密ENC()包裹的配置值
  3. 通过环境变量/命令行安全传递密钥
  4. 支持多种加密算法和高级配置
    完整方案确保敏感信息(如API密钥、数据库密码)不在配置文件中明文暴露。

到此这篇关于使用jasypt在springboot中加密敏感信息的文章就介绍到这了,更多相关springboot jasypt 加密敏感 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JAVA使用quartz添加定时任务,并依赖注入对象操作

    JAVA使用quartz添加定时任务,并依赖注入对象操作

    这篇文章主要介绍了JAVA使用quartz添加定时任务,并依赖注入对象操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • Java正确使用访问修饰符的姿势

    Java正确使用访问修饰符的姿势

    访问修饰符是Java语法中很基础的一部分,但是能正确的使用Java访问修饰符的程序员只在少数,下面这篇文章主要给大家介绍了关于Java正确使用访问修饰符的姿势,需要的朋友可以参考下
    2021-11-11
  • SpringBoot+Docker+IDEA实现一键构建+推送、运行、同镜像多容器启动

    SpringBoot+Docker+IDEA实现一键构建+推送、运行、同镜像多容器启动

    这篇文章主要介绍了SpringBoot+Docker+IDEA实现一键构建+推送、运行、同镜像多容器启动,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Spring Cache 整合 Redis 实现高效缓存的方法

    Spring Cache 整合 Redis 实现高效缓存的方法

    SpringCache是Spring框架的缓存抽象层,通过注解简化缓存逻辑,支持Caffeine、EhCache、Redis等实现,接下来通过本文给大家介绍Spring Cache整合Redis实现高效缓存的方法,感兴趣的朋友跟随小编一起看看吧
    2025-08-08
  • 常用json与javabean互转的方法实现

    常用json与javabean互转的方法实现

    这篇文章主要介绍了常用json与javabean互转的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • 生产环境jvm常用的参数设置建议分享

    生产环境jvm常用的参数设置建议分享

    在Java应用程序的部署过程中,合理配置JVM(Java虚拟机)参数对于提升应用性能、稳定性和资源利用效率至关重要,本文将探讨一些常用的JVM参数设置建议,帮助开发者在生产环境中优化Java应用,需要的朋友可以参考下
    2025-04-04
  • 设置session有效时间的三种方式

    设置session有效时间的三种方式

    这篇文章主要介绍了设置session有效时间的三种方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • mybaties plus实体类设置typeHandler不生效的解决

    mybaties plus实体类设置typeHandler不生效的解决

    这篇文章主要介绍了mybaties plus实体类设置typeHandler不生效的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • Spring Boot常用注解(经典干货)

    Spring Boot常用注解(经典干货)

    Spring Boot是一个快速开发框架,快速的将一些常用的第三方依赖整合,全部采用注解形式,内置Http服务器,最终以Java应用程序进行执行,这篇文章主要介绍了Spring Boot常用注解(绝对经典),需要的朋友可以参考下
    2023-01-01
  • java Class文件内部结构解析过程详解

    java Class文件内部结构解析过程详解

    java class的文件结构,java class文件结构是基于字节流的,用unicode进行编码,下面说说java Class文件内部结构分析
    2013-11-11

最新评论