码迷,mamicode.com
首页 > 编程语言 > 详细

java.lang.SecurityException: JCE cannot authenticate the provider BC

时间:2015-05-08 22:13:41      阅读:6172      评论:0      收藏:0      [点我收藏+]

标签:php   加密   jar   security   

和X公司对接数据,他们的开发语言是java,我们是php,双方数据通信的时候采用的加密方法是:bouncycastle

由于这个时间大神的限制,我们暂时不用PHP开发自己的加密算法,而是采用对方已有的加密包。

具体思路是:

1.将java写的的加密方法封装成jar包;

2.然后在php里面直接调用:exec("java -jar encrypt.jar")系统命令执行,实现加密解密


这里主要遇到2个问题:

1.cannot load mian class

2.调试过程中报错:java.lang.SecurityException: JCE cannot authenticate the provider BC 


1.执行运行jar包的命令“java -jar encrypt.jar”报错:cannot load mian class

   这个我们在万能的百度和google上面也找了很多资料,都没有解决,最后通过最古老的口传身教的方式,问了一个老谋深算的java程序员,解决了这个bug

   方法是:

   打包成jar包以后,在正式运行执行:java -jar之前,需要删除 .jar包中的一个文件:META-INF/BCKEY.DSA

   至于这是为什么呢?这个问题我已经替大家问过大神了,大神表示世界很大,他想去看看


2.调试过程中报错:java.lang.SecurityException: JCE cannot authenticate the provider BC 

   这个问题百度是解决不了的,是google解决的,google里面有一篇解释很清楚完整的博客,原文地址:http://download.csdn.net/detail/tomliguocai/3945936

   膜拜大神

   以下是具体的解决方法:

   1. 在java下找到  jre/lib/security/java.security,添加一行代码:

       security.provider.9=org.bouncycastle.jce.provider.BouncyCastleProvider   //这里的9,视具体情况而定,你可能是是10,11...

   2.添加2个扩展包到jre/lib/ext目录下:bcprov-jdk15-135.jar     bcprov-jdk16-143.jar

   3.把你的class path中的有的BC的扩展包都删除(这步我没有用到,因为class path里面没有这个)

经过这些处理以后,终于看到了乖乖的加密后的密文和数字签名,哈哈哈,happy~


java.lang.SecurityException: JCE cannot authenticate the provider BC

标签:php   加密   jar   security   

原文地址:http://blog.csdn.net/kkl_renwu/article/details/45583873

(0)
(2)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!