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
算法、迭代次数、盐和 IV 都显式声明。加密工具和运行时使用同一组参数,才不会出现“本地能解,服务起不来”的问题。
二、密文在配置,密钥不在配置
配置文件可以保存密文,但密钥必须通过环境变量、JVM 参数或部署系统注入。密钥一旦跟着密文一起提交,加密就只剩下混淆意义。
三、项目使用边界
Jasypt 只解决配置读取时的静态敏感信息问题。它不负责数据库权限、网络隔离、账号轮换或审计。这些仍要由 MySQL、SMTP 服务和部署环境承担。
四、避坑点
- 同一明文每次加密结果不同是随机盐的正常表现。
- 排查失败先确认密钥,再比较算法参数。
- 开发、生产可以使用不同密钥,泄露范围更小。
- 密钥泄露后要重新加密敏感配置,而不是只改代码。
五、经验总结
Jasypt 的价值是降低仓库泄露后的直接影响。真正的安全边界仍然取决于密钥管理和最小权限。