You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot中Jasypt加密失效问题求助

解决Jasypt加密属性未自动解密的问题

看起来你已经走对了大部分步骤,但属性还是没被解密,我来帮你排查几个最可能的遗漏点:

  • 检查@EnableEncryptableProperties的位置
    这个注解必须加在你的Spring Boot启动类(就是带有@SpringBootApplication的那个类)上,或者加在被Spring扫描到的配置类中。如果注解放错了位置,Jasypt的加密处理器不会被激活,自然不会解密ENC(...)格式的属性。

  • 修正application.properties里的Jasypt配置格式
    你提供的配置把两个属性写在了同一行,这在properties文件里是无效的!每个键值对必须单独占一行:

    jasypt.encryptor.password=secretpassword
    jasypt.encryptor.algorithm=PBEWithMD5AndDES
    

    如果配置没被正确读取,Jasypt无法获取解密密钥,就会直接返回原始的ENC(...)字符串。

  • 验证依赖版本兼容性
    确保jasypt-spring-boot-starter的版本和你的Spring Boot版本匹配:

    • Spring Boot 2.x 对应 jasypt-spring-boot-starter 3.x 版本
    • Spring Boot 3.x 对应 jasypt-spring-boot-starter 4.x 版本
      比如Maven依赖(以Spring Boot 2.x为例):
    <dependency>
        <groupId>com.github.ulisesbocchio</groupId>
        <artifactId>jasypt-spring-boot-starter</artifactId>
        <version>3.0.5</version>
    </dependency>
    

    版本不兼容可能导致Jasypt的自动配置不生效。

  • 确认加密时的密钥和算法与配置一致
    虽然当前问题是属性没被解密(直接输出ENC串),但后续如果出现解密失败,也要确保生成密文时用的密钥和算法和配置文件里的完全一致。比如用Jasypt命令行工具加密时,要指定相同参数:

    java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="你的原始密钥" password=secretpassword algorithm=PBEWithMD5AndDES
    
  • 排查自定义PropertySource的干扰
    如果你在项目中自定义了PropertySource或者使用了其他配置加载框架,可能会绕过Jasypt的属性处理器。这种情况下,需要确保Jasypt的EncryptablePropertySource被正确集成到配置加载流程中。

如果以上都排查过了,你可以试试启动时加上--debug参数,查看Spring的自动配置日志,确认JasyptEncryptorAutoConfiguration是否被正常加载。

内容的提问来源于stack exchange,提问作者Milind Pardeshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:55:08