在Android/Java应用程序中,
上述代码对以下16字节的加密数据总是会抛出“BadPaddingException: pad block corrupted”异常:
当数据已经是块大小,并且不需要填充时,为什么会抛出此异常呢?
注意:加密数据来自php服务器。
编辑:
更改为
byte[] data = ":ʺ$jhk¨ë‹òºÃ"; // fetched from php server..
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, mKeyspec);
return new String(cipher.doFinal(data));
上述代码对以下16字节的加密数据总是会抛出“BadPaddingException: pad block corrupted”异常:
密钥长度为16字节。data = ":ʺ$jhk¨ë‹òºÃ"(该数据为16个字符)
当数据已经是块大小,并且不需要填充时,为什么会抛出此异常呢?
注意:加密数据来自php服务器。
编辑:
更改为
Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");
而不是
Cipher cipher = Cipher.getInstance("AES");
后,解密方法成功,但却给出了这个输出图片:https://istack.dev59.com/cBUOU.webp