繁体   English   中英

使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM