JCE cannot authenticate the provider BC

JCE cannot authenticate the provider BC 这个问题,很多人遇到,如下


本人本着求真溯源的态度,先后通道搜索国内外资料和官网文档的方式,顺道撸了一点JCE。最终得到问题的原因,知道了明确的原因,自然各位道友有无数种方法解决。

    原因:JDK对类似bouncycastle的bcprov-jdk15on-159.jar包是有安全签名认证的,当我们如果进行生成jar的时候,如果选择类似eclipse的export runnable jar file 功能,如下红色勾选的选项,eclipse会解压缩依赖的包后一起打包成一个jar文件

JCE cannot authenticate the provider BC_第1张图片


以上生成jar的方式,会解压bcprov-jdk15on-159.jar,这类安全加密算法类似jar一旦有更改,包括解压,签名就会失效,不能通道jdk的验证,就会出现以上错误。

  针对以上的打包方式解决方法很简单,就是如下红色勾选的方式,将jar完成的打包进一个文件中,这样就没有问题了

JCE cannot authenticate the provider BC_第2张图片JCE cannot authenticate the provider BC_第3张图片

生成的文件是这样的:

JCE cannot authenticate the provider BC_第4张图片

记得移动jar的时候,把**_lib文件带上放在同一个文件夹下面。

网上的兄弟很多各种改jdk安全配置文件,那样不好。。。

附送动态加入密码包见截图.就不需要添加类似:security.provider.9=org.bouncycastle.jce.provider.BouncyCastleProvider如下

JCE cannot authenticate the provider BC_第5张图片


1、动态加入

Security.addProvider(org.bouncycastle.jce.provider.BouncyCastleProvider)

2、注意打包方式

3、OK

你可能感兴趣的:(java,linux)