日期:2014-05-18  浏览次数:20585 次

求解:非对称加解密问题
A端请求加密、BASE64编码;
B端响应BASE64解码、解密;


A端使用jdk1.4,这个版本本身没有支持非对称加解密的provider,所以需要自己下载一个,我下载了bcprov-jdk14-146.jar,并在加密中手动添加provider,代码:Security.addProvider(new BouncyCastleProvider());

B端使用jdk1.5或者jdk1.6,这两个版本都有自带的provider,所以不需要下载。

解密的时候报错:javax.crypto.BadPaddingException: Blocktype mismatch: 0


经测试,使用同样的证书、同样的字符串在AB两种环境下分别加密编码后的结果是不一样的,个人怀疑是否因为不同的provider引起的。求解!

------解决方案--------------------
BASE64有这么复杂么
------解决方案--------------------

         String author = new sun.misc.BASE64Encoder()
               .encode((username + ":" + password).getBytes());

------解决方案--------------------
B端使用jdk1.5或者jdk1.6  使用下和jdk1.4相同的provider看看吧。