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