SpringVortexNotes

Jasypt 配置加密组件

zjc 于 2026-08-12 发布

代码环境

Jasypt 用来处理配置文件里的敏感值。数据库密码、SMTP 授权码这类信息不以明文提交,而是保存为 ENC(...) 密文,运行时通过外部注入的密钥解密。

一、算法显式固定

jasypt:
  encryptor:
    algorithm: PBEWithHMACSHA512AndAES_256
    key-obtention-iterations: 100000
    salt-generator-classname: org.jasypt.salt.RandomSaltGenerator
    iv-generator-classname: org.jasypt.iv.RandomIvGenerator
    string-output-type: base64

https://github.com/springvortex/spring-cloud-alibaba/blob/release/v1.0.0/service-provider/src/main/resources/config/application-jasypt.yaml

算法、迭代次数、盐和 IV 都显式声明。加密工具和运行时使用同一组参数,才不会出现“本地能解,服务起不来”的问题。

二、密文在配置,密钥不在配置

配置文件可以保存密文,但密钥必须通过环境变量、JVM 参数或部署系统注入。密钥一旦跟着密文一起提交,加密就只剩下混淆意义。

三、项目使用边界

Jasypt 只解决配置读取时的静态敏感信息问题。它不负责数据库权限、网络隔离、账号轮换或审计。这些仍要由 MySQL、SMTP 服务和部署环境承担。

四、避坑点

  1. 同一明文每次加密结果不同是随机盐的正常表现。
  2. 排查失败先确认密钥,再比较算法参数。
  3. 开发、生产可以使用不同密钥,泄露范围更小。
  4. 密钥泄露后要重新加密敏感配置,而不是只改代码。

五、经验总结

Jasypt 的价值是降低仓库泄露后的直接影响。真正的安全边界仍然取决于密钥管理和最小权限。

评论

评论由 GitHub Discussions 承载,需要 GitHub 账号登录。