利用你上面提供的代码, 执行出错了javax.crypto.BadPaddingException: Given final block not properly padded. Such issues can arise if a bad key is used during decryption. at com.sun.crypto.provider.CipherCore.unpad(CipherCore.java:975) at com.sun.crypto.provider.CipherCore.fillOutputBuffer(CipherCore.java:1056) at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:853) at com.sun.crypto.provider.AESCipher.engineDoFinal(AESCipher.java:446) at javax.crypto.Cipher.doFinal(Cipher.java:2164) at com.sxd.iec.util.AesUtil.decrypt(AesUtil.java:51)
时间: 2023-11-17 07:04:58 浏览: 495
android DES加密解密 javax.crypto.IllegalBlockSizeException: last block incomplete in
这个错误通常是由于密钥不正确或密文被篡改导致的。请确保在加密和解密过程中使用相同的密钥,并且密文没有被修改。
另外,还需要注意以下几点:
1. 密钥长度必须是16、24或32字节,如果不满足这些长度要求,可以考虑使用密钥派生函数(例如PBKDF2)来生成符合要求的密钥。
2. 在实际应用中,建议使用更安全的加密模式(如CBC、CTR)和填充方式(如PKCS7Padding)。
3. AES/ECB模式不提供消息完整性保护,因此在实际应用中,建议使用带有消息认证码(MAC)的加密模式,如AES/GCM模式。
如果仍然遇到问题,请检查密钥和密文是否正确,并确保使用的Java版本支持AES加密算法。
阅读全文