`
windforce
  • 浏览: 79087 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

IBM & SUN Java Cryptography Compatibiliy problem

阅读更多

在将系统转移到websphere上时,原来运行到好好的代码。突然就跑不起来了

查看日志文件后发现抛出了如下异常。

java 代码
  1. javax.crypto.BadPaddingException: Given final block not properly padded   
  2. at com.ibm.crypto.provider.DESCipher.engineDoFinal(Unknown Source)   
  3. at com.ibm.crypto.provider.DESCipher.engineDoFinal(Unknown Source)   
  4. at javax.crypto.Cipher.doFinal(Unknown Source)   
  5. at test.Decrypt.main(Decrypt.java:28)   

跟踪输入,均没有问题。没辙,只能上网solo...

根据下面这篇所说,应该是IBM和SUN的随机数生成算法不一致造成的(http://www.ibm.com/developerworks/forums/message.jspa?messageID=3674765

原代码:

java 代码
  1. KeyGenerator _generator = KeyGenerator.getInstance("DES");   
  2. _generator.init(new SecureRandom(strKey.getBytes()));   
  3. this.key = _generator.generateKey();  

修改为:

 


 

java 代码
  1. KeyGenerator _generator = KeyGenerator.getInstance("DES");   
  2. Security.addProvider(new sun.security.provider.Sun());   
  3. SecureRandom sr = SecureRandom.getInstance("SHA1PRNG","SUN");   
  4. sr.setSeed(strKey.getBytes());   
  5. generator.init(sr);   
  6. this.key = _generator.generateKey(); 

再把sun的jar包加到classpath即可。

记于此

分享到:
评论
1 楼 daquan198163 2012-05-30  
是rt.jar么?

相关推荐

Global site tag (gtag.js) - Google Analytics