windows上加解密正常,linux上加密正常,解密时发生如下异常:
javax.crypto.BadPaddingException: Given
final block not properly padded
at
com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at
com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at
com.sun.crypto.provider.AESCipher.engineDoFinal(DashoA13*..)
at
at chb.test.crypto.AESUtils.crypt(AESUtils.
at
chb.test.crypto.AESUtils.AesDecrypt(AESUtils.
at
chb.test.crypto.AESUtils.main(AESUtils.
解决方法:
经过检查之后,定位在生成KEY的方法上,如下:
public static SecretKey getKey (String strKey)
{ try
{ KeyGenerator _generator = KeyGenerator.getInstance( "AES"
); _generator.init(128, new
SecureRandom(strKey.getBytes())); return _generator.generateKey(); } catch (Exception e) { throw new RuntimeException( " 初始化密钥出