Android AES加密报错处理:javax.crypto.IllegalBlockSizeException: error:1e00007b:Cipher functions:OPENSSL_in...
时间: 2024-03-09 11:45:57 浏览: 407
Android AES加密
这个错误通常是由于加密数据的长度与AES加密算法的块大小不匹配导致的。AES算法的块大小为128位,即16个字节。如果加密的数据长度不是16的倍数,那么就需要进行填充(padding)操作,使其长度满足要求。
在Android中,可以使用PKCS7Padding或者ZeroPadding两种填充方式。其中,PKCS7Padding是常用的填充方式,可以保证填充数据的长度和填充数据的值都是正确的。而ZeroPadding则是在数据末尾补0,不保证填充数据的长度和填充数据的值都是正确的。
所以,你可以尝试修改你的加密代码,添加相应的填充方式:
```
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
cipher.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(iv));
byte[] encryptedData = cipher.doFinal(data);
```
如果还是出现相同的错误,可以检查一下加密数据的长度是否是16的倍数,或者尝试使用ZeroPadding进行填充。
阅读全文