使用AES托管类时出现填充无效且无法删除的错误

本文关键字:无效 删除 错误 填充 AES 使用 | 更新日期: 2023-09-27 18:21:56

我正试图在windows phone中使用AES 256加密来获得确定的密钥,并使用IV来解密我从服务器收到的字符串。在服务器端,使用了AES256/CCB/PkCS5填充,我使用的是AES管理的windows代码类。

我得到以下错误:

使用AES托管类时,填充无效且无法删除错误

你能提出宝贵的建议吗?

使用AES托管类时出现填充无效且无法删除的错误

确保在密码上设置了正确的填充模式(例如,检查加密填充):

        cipher.Padding = PaddingMode.ISO10126; // example

此外,只要设置了"关键点",就不需要设置"关键点大小"。设置KeySize将覆盖现有的Key。所以,只需删除代码中的这一行:

        aesDecryptor.KeySize = 256;

当加密和解密由于任何原因没有使用相同的密钥或初始化向量时,有时会收到关于无效填充的消息。填充是添加到纯文本末尾的字节数,使其达到密码工作的完整块数。在PKCS7中,每个字节的填充都等于添加的字节数。因此,解密后总是可以将其删除。您的解密导致了一个字符串,其中最后n个字节不等于最后一个字节的值n(希望这句话有意义)。所以试着仔细检查一下你的钥匙。

最后,我能够解密字符串。我已经应用了HexStringToByte转换,而不是StringToBytes转换。

非常感谢您的投入。