zhangxinba 发表于 2017-5-25 10:01:21

IBM & SUN Java Cryptography Compatibiliy problem

  在将系统转移到websphere上时,原来运行到好好的代码。突然就跑不起来了http://windforce.iteye.com/javascripts/fckeditor/editor/images/smiley/msn/angry_smile.gif
  查看日志文件后发现抛出了如下异常。
java 代码

[*]javax.crypto.BadPaddingException: Given final block not properly padded   
[*]at com.ibm.crypto.provider.DESCipher.engineDoFinal(Unknown Source)   
[*]at com.ibm.crypto.provider.DESCipher.engineDoFinal(Unknown Source)   
[*]at javax.crypto.Cipher.doFinal(Unknown Source)   
[*]at test.Decrypt.main(Decrypt.java:28)   

  跟踪输入,均没有问题。没辙,只能上网solo...
  根据下面这篇所说,应该是IBM和SUN的随机数生成算法不一致造成的(http://www.ibm.com/developerworks/forums/message.jspa?messageID=3674765)
  原代码:
java 代码

[*]KeyGenerator _generator = KeyGenerator.getInstance("DES");   
[*]_generator.init(new SecureRandom(strKey.getBytes()));   
[*]this.key = _generator.generateKey();  

  修改为:
java 代码

[*]KeyGenerator _generator = KeyGenerator.getInstance("DES");   
[*]Security.addProvider(new sun.security.provider.Sun());   
[*]SecureRandom sr = SecureRandom.getInstance("SHA1PRNG","SUN");   
[*]sr.setSeed(strKey.getBytes());   
[*]generator.init(sr);   
[*]this.key = _generator.generateKey(); 

  再把sun的jar包加到classpath即可。
  记于此http://windforce.iteye.com/javascripts/fckeditor/editor/images/smiley/msn/regular_smile.gif
页: [1]
查看完整版本: IBM & SUN Java Cryptography Compatibiliy problem