Sun BASE64Decoder 与jce cipher的问题

以前发在公司内网的文章,发出来共享,隐去具体项目、人员的名字。

在某项目中发现Sun 的BASE64Decoder 与某些cipher实现存在问题。
1.BASE64Decoder
这个没有java doc,属于jdk里不推荐使用的工具类,使用过程中发现,在非常偶然的情况下,解出的字节数组会少两个字节,粗略估计出错概率<万分之一

2.jce中的3des cipher 解密功能
多线程情况下,会出现无法解出或者解出的结果部分错误,怀疑非线程安全。出错概率万分之一左右,没有验证jce中其他算法是否也这样。

解决方案:
1.使用apache common中的Base64替换
2.将cipher由类变量改成局部变量,避免多线程的问题,当然性能会稍差。尝试换了Bouncy Castle提供的jce实现问题依旧,或许jce框架约定就是这样的,有时间仔细看看jce规范。

你可能感兴趣的:(jdk,多线程,算法,框架,sun)