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看看吧。