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]