我正在尝试在Windows手机中使用AES 256加密来获取明确的密钥,并使用IV来解密我从服务器收到的字符串。在服务器端使用AES256 / CBC / PkCS5填充,我使用的是AES托管类的Windows代码。
我收到以下错误:
填充无效,使用AES管理类
时无法删除错误你能提出宝贵的建议吗?
答案 0 :(得分:0)
当加密和解密因任何原因未使用相同的密钥或初始化向量时,有时会收到有关无效填充的消息。填充是在纯文本末尾添加的一些字节,以使密码可以处理完整数量的块。在PKCS7填充中,每个字节等于添加的字节数,因此在解密后总是可以删除它。你的解密导致了一个字符串,其中最后n个字节不等于最后一个字节的值n(希望句子有意义)。所以请尝试仔细检查你的钥匙。
答案 1 :(得分:0)
确保在密码上设置了正确的填充模式(只是一个例子,检查加密填充):
cipher.Padding = PaddingMode.ISO10126; // example
只要您设置密钥,您也不需要设置KeySize。设置KeySize将覆盖现有的Key。所以,只需在代码中删除此行:
aesDecryptor.KeySize = 256;
答案 2 :(得分:0)
最后,我能够解密字符串。我已应用HexStringToByte转换而不是StringToBytes转换。
非常感谢您的投入。