gpt4 book ai didi

java - 'BadPaddingException : pad block corrupted' while decrypting using AES/ECB

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:05:26 24 4
gpt4 key购买 nike

在 Android/java 应用中,

byte[] data = ":ʺ$jhk¨ë‹òºÃ"; // fetched from php server..
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, mKeyspec);
return new String(cipher.doFinal(data));

上面的代码总是抛出 BadPaddingException: pad block corrupted 用于后续的 16 字节加密数据

data = ":ʺ$jhk¨ë‹òºÃ" (the data is 16 chars)

key 长度为 16 个字节。

为什么数据已经是一个block大小了,还会抛出这个异常?并且不需要填充。

注意:加密数据是从 php 服务器获取的。

编辑:

改成后
密码 cipher = Cipher.getInstance("AES/ECB/NoPadding");
来自
密码 cipher = Cipher.getInstance("AES");

解密方法成功,但给出此输出 enter image description here

最佳答案

在大多数情况下,我一直在处理 BadPaddingException 是在我尝试解密在服务器端使用不同填充加密的内容时,或者在某些情况下甚至没有解密。因此,首先我建议您查看方式并确保服务器返回的字符串不仅是 Base64 编码的,而且也是使用 AES 加密的。另一件要注意的事情是,如果服务器端的加密使用某种填充,例如:AES/CBC/NoPaddingAES/CBC/PKCS5PaddingAES/CBC/PKCS7Padding。在这种情况下,您必须在 Android 中使用相同的填充,以便解密字符串。

关于java - 'BadPaddingException : pad block corrupted' while decrypting using AES/ECB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15158089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com