填充无效,使用AES Managed类时无法删除错误

时间:2014-09-16 06:40:51

标签: c# windows-phone-8 encryption

我正在尝试在Windows手机中使用AES 256加密来获取明确的密钥,并使用IV来解密我从服务器收到的字符串。在服务器端使用AES256 / CBC / PkCS5填充,我使用的是AES托管类的Windows代码。

我收到以下错误:

填充无效,使用AES管理类

时无法删除错误

你能提出宝贵的建议吗?

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

确保在密码上设置了正确的填充模式(只是一个例子,检查加密填充):

        cipher.Padding = PaddingMode.ISO10126; // example

只要您设置密钥,您也不需要设置KeySize。设置KeySize将覆盖现有的Key。所以,只需在代码中删除此行:

        aesDecryptor.KeySize = 256;

答案 2 :(得分:0)

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

非常感谢您的投入。