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

Spring Boot打包War部署Tomcat后无法解密application.yml密码的求助

问题排查与解决方案

环境信息

  • Spring Boot版本:3.2.3
  • Tomcat版本:apache-tomcat-10.1.19
  • JDK版本:jdk-21.0.2
  • Jasypt依赖:
<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>3.0.5</version>
</dependency>

问题描述

在IDEA中可正常加密/解密application.yml中的数据库密码,但打包为War部署到Tomcat启动时抛出异常:

Reason: java.security.NoSuchAlgorithmException: PBEWithMD5AndTripleDES  SecretKeyFactory not available

已在catalina.properties中配置:

jasypt.encryptor.password=password 
jasypt.encryptor.algorithm=PBEWithMD5AndTripleDES 
jasypt.encryptor.iv-generator-classname=org.jasypt.iv.NoIvGenerator

解决方案

方案1:更换安全加密算法(推荐)

PBEWithMD5AndTripleDES属于弱加密算法,Java 21已默认禁用/移除该算法。建议更换为高版本JDK支持的安全算法,比如PBEWITHHMACSHA512ANDAES_256:

  1. 修改catalina.properties中的算法配置:
jasypt.encryptor.algorithm=PBEWITHHMACSHA512ANDAES_256
  1. 使用该算法重新加密数据库密码(确保加密时的算法与配置一致)。

方案2:启用旧算法(不推荐,存在安全风险)

如果必须保留旧算法,需修改JDK的安全策略文件:

  1. 打开JDK安装目录下的conf/security/java.security文件
  2. 找到jdk.crypto.disabledAlgorithms配置项,移除其中的PBEWithMD5AndTripleDES
  3. 保存文件后重启Tomcat

方案3:确认依赖兼容性

检查Jasypt与Spring Boot版本是否匹配,当前使用的jasypt-spring-boot-starter 3.0.5与Spring Boot 3.2.3兼容,若有问题可尝试升级到最新兼容版本(如3.0.6)。

内容的提问来源于stack exchange,提问作者Vincent Zheng

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 08:33:33