土拨鼠的博客 2023-04-20 13:36 采纳率: 0%
浏览 24

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

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

  • 写回答

1条回答 默认 最新

  • 守时间的孤岛 2023-04-20 13:46
    关注

    该回答引用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 版本中均可正常工作。

    评论

报告相同问题?

问题事件

  • 创建了问题 4月20日

悬赏问题

  • ¥20 python忆阻器数字识别
  • ¥15 无法输出helloworld
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
  • ¥15 振荡电路,ADS仿真