[英]“Padding is invalid and cannot be removed” Error while decrypting cipher text Using Aes
[英]Padding is invalid and cannot be removed error while using AES Managed class
我正在尝试在Windows Phone中使用AES 256加密来确定密钥,并使用IV来解密从服务器接收到的字符串。 在服务器端,使用AES256 / CBC / PkCS5填充,而我使用的是Windows代码的AES托管类。
我收到以下错误:
使用AES托管类时,填充无效且无法删除错误
能否请您提出宝贵的建议?
当加密和解密由于某种原因未使用相同的密钥或初始化向量时,有时会收到有关无效填充的消息。 填充是添加到纯文本末尾的一定数量的字节,以使其达到用于密码工作的全部块数。 在PKCS7填充中,每个字节等于添加的字节数,因此解密后始终可以将其删除。 您的解密导致了一个字符串,其中最后n个字节不等于最后一个字节的值n(希望该句子有意义)。 因此,请仔细检查您的密钥。
确保在密码上设置了正确的填充模式(仅作为示例,请检查加密填充):
cipher.Padding = PaddingMode.ISO10126; // example
另外,您只要设置密钥就不需要设置KeySize。 设置KeySize将覆盖现有的Key。 因此,只需在代码中删除此行:
aesDecryptor.KeySize = 256;
最后,我能够解密字符串。 我已应用HexStringToByte转换,而不是StringToBytes转换。
非常感谢您的投入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.