本文主要是介绍解决Linux报错JCE cannot authenticate the provider BC,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
JCE无法验证提供者BC
使用jdk17问题真多,windows和Linux是有一定的区别的,在windows中调第三方接口要用到AES加密,本地测试没报错,但部署到Linux后就报错了!
解决办法看了半天都是针对jdk安装目录下的jre/lib/ext/java.security,编辑添加
# 这个序号11根据自己的配置写就行,有可能你的配置和我不一样
security.provider.17=org.bouncycastle.jce.provider.BouncyCastleProvider
但是由于这是运维维护的添加不了,而且jdk17是没有jre的本人新建jre目录一级级的往下添加并编辑java.security,但是重启后添加的jre目录没了,蛋疼!
终极解决办法
最后只好从代码处理了
1、将PKCS7Padding改成PKCS5Padding
ALGORITHM = "AES/CBC/PKCS5Padding"
2、把原来的Cipher.getInstance(ALGORITHM."BC"),把BC去掉
Cipher.getInstance(ALGORITHM);
3、重新打包镜像,在Linux重启项目,成功了!
这篇关于解决Linux报错JCE cannot authenticate the provider BC的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!