jasypt是java生态中轻量易集成的加密库,用于微服务配置中心对数据库密码等敏感配置加解密;需引入3.0.5版starter依赖,通过环境变量传入主密码,用enc()包裹密文,启动时自动解密。

Jasypt 是 Java 生态中轻量、易集成的加密库,常用于微服务配置中心(如 Nacos、Apollo、Spring Cloud Config)中对敏感配置(如数据库密码、API Key)进行加解密。它不依赖外部密钥管理服务,通过主密码(master password)控制加解密过程,适合中小规模微服务场景。
一、引入 Jasypt 依赖
在 Spring Boot 微服务的 pom.xml 中添加:
注意:版本需与 Spring Boot 版本兼容(例如 Spring Boot 2.7+ 推荐用 3.x;Boot 3.x 项目需用 jasypt-spring-boot-starter 4.x 并确认支持 Jakarta EE 9+)。
二、配置主密码与启用加解密
在 application.yml 或 application.properties 中设置主密码(推荐从环境变量或启动参数传入,避免硬编码):
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
application.yml 示例:
jasypt:
encryptor:
password: ${JASYPT_ENCRYPTOR_PASSWORD:changeit} # 主密码,建议用环境变量
algorithm: PBEWithHMACSHA512AndAES_256
iv-generator-classname: org.jasypt.iv.RandomIvGenerator
该配置启用自动解密能力:Spring 启动时会识别形如 ENC(XXXXX) 的配置值,并用主密码解密后注入 Bean。
三、加密敏感配置并写入配置中心
使用 Jasypt 提供的命令行工具或 Java 工具类生成密文:
- 下载 jasypt-1.9.3.jar(与 starter 版本算法一致),执行:
java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="mydbpass123" password=changeit algorithm=PBEWithHMACSHA512AndAES_256 - 输出类似:ENC(8KzQx...ZmFt),将该字符串填入配置中心对应字段(如 spring.datasource.password)
- 配置中心无需改动——只要微服务侧集成了 Jasypt,读到 ENC(...) 就会自动解密
四、适配主流配置中心的注意事项
Nacos:确保配置项内容为纯文本格式(非 JSON),且 ENC() 字符串未被额外转义(如 \" 或 %22);若用 Nacos 控制台编辑,直接粘贴 ENC(...) 即可。
Apollo:需关闭 Apollo 的“自动解析占位符”功能(避免把 ENC(...) 当成占位符处理),并在客户端开启 Jasypt 解密(已由 starter 自动完成)。
Spring Cloud Config Server:服务端默认不参与解密;解密必须发生在 Config Client(即你的微服务)启动阶段,因此 client 端仍需完整配置 Jasypt。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










