SpringBoot打包后SDK报错JCE无法对提供程序BC进行身份验证

SpringBoot打包后SDK报错cn.hutool.crypto.CryptoException: SecurityException: JCE cannot authenticate the provider BC有没有什么解决办法?在idea是正常的,打包部署到服务器请求就报这个错误。服务器的jdk是17

该回答引用chatgpt:你本地和服务器jdk版本不一样吗,建议保持一致,这样能方便及时发现问题
您在服务器上部署的 JDK 版本是 JDK 17,而出现 cn.hutool.crypto.CryptoException: SecurityException: JCE cannot authenticate the provider BC 的原因是 JDK 9+ 默认没有无限制权限策略文件(JCE Policy files)。

为了解决这个问题,您可以尝试以下方法:

1.下载Java Cryptography Extension (JCE) 无限制权限策略文件,解压后将文件放到 $JAVA_HOME/jre/lib/security 目录下,覆盖原有文件。JDK 17 的 JCE 无限制权限策略文件下载地址:JCE 无限制权限策略文件下载。

在您的应用程序中手动添加 BouncyCastle 提供者,可以通过以下代码添加:

import java.security.Security;
import org.bouncycastle.jce.provider.BouncyCastleProvider;

Security.addProvider(new BouncyCastleProvider());


在代码中添加 BouncyCastle 提供者后,您可以在使用 Hutool 进行加密/解密操作时,指定 BouncyCastle 算法实现。例如:

SecureUtil.bouncyCastle("AES/ECB/PKCS7Padding");


如果您的应用程序中有多处使用到加密/解密操作,建议将这些加密/解密操作统一使用 BouncyCastle 提供的算法实现,这样可以保证在不同的 JDK 版本中均可正常工作。