【问题标题】:Padding is invalid and cannot be removed error while using AES Managed class使用 AES 托管类时,填充无效且无法删除错误
【发布时间】:2014-09-16 18:25:31
【问题描述】:

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

我收到以下错误:

使用 AES 托管类时,Padding is invalid and cannot be removed 错误

能否请您提出宝贵的建议?

【问题讨论】:

  • 看看这个post看看有没有帮助

标签: c# windows-phone-8 encryption


【解决方案1】:

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

        cipher.Padding = PaddingMode.ISO10126; // example

另外你不需要设置KeySize,只要你设置了Key。设置 KeySize 将覆盖您现有的 Key。因此,只需在您的代码中删除这一行:

        aesDecryptor.KeySize = 256;

【讨论】:

  • windows phone 中没有 PaddingMode 选项。默认的 PaddingMode 是 PKCS7
【解决方案2】:

当加密和解密由于某种原因没有使用相同的密钥或初始化向量时,您有时会收到有关无效填充的消息。填充是添加到纯文本末尾的一些字节,以使其组成完整数量的块以供密码处理。在 PKCS7 填充中,每个字节等于添加的字节数,因此在解密后始终可以将其删除。您的解密导致最后 n 个字节不等于最后一个字节的值 n 的字符串(希望这句话有意义)。因此,请尝试仔细检查您的密钥。

【讨论】:

  • 感谢回复我会查收的
【解决方案3】:

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

非常感谢您的意见。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    • 1970-01-01
    • 2020-12-26
    • 1970-01-01
    • 2014-06-17
    • 1970-01-01
    相关资源
    最近更新 更多