项目使用BC加密包,打包运行后出现
java.security.NoSuchProviderException: JCE cannot authenticate the provider BC
错误如何解决。
原因
BC包签名必须在自身的Jar中完成。
可能问题
打包方式将依赖的BC包全部以源码方式打入了最终JAR。
思路
打包时剔除BC包,在JDK拓展依赖库中放入BC包。
处理
提供一下shell脚本
# 替换成你的JDK目录 !!!!
jdkhome="/usr/java/jdk1.8.0_281-amd64"
# 选择你bc版本
version="1.70"
# https://repo1.maven.org/maven2/org/bouncycastle/bcpkix-jdk15on/bcpkix-jdk15on/1.70/bcpkix-jdk15on-1.70.jar
function downjar() {
curl -L "https://repo1.maven.org/maven2/org/bouncycastle/$1/$2/$1-$2.jar" -o "${jdkhome}/jre/lib/ext/$1-$2.jar"
}
downjar "bcpkix-jdk15on" $version
downjar "bcprov-jdk15on" $version
downjar "bcutil-jdk15on" $version