【问题标题】:C# Rijndael CryptographicException "Length of the data to encrypt is invalid."C# Rijndael CryptographicException “要加密的数据长度无效。”
【发布时间】:2013-03-31 16:50:32
【问题描述】:

我正在尝试使用 rijndael 算法加密和解密文件,但我收到错误消息“要加密的数据长度无效。”。我可以加密文件,但无法解密。这是我的解密函数;

    public static byte[] Decrypt(byte[] toEncryptArray)
    {
        byte[] keyArray = UTF8Encoding.UTF8.GetBytes("-key-");
        RijndaelManaged rDel = new RijndaelManaged();
        rDel.Key = keyArray;
        rDel.Padding = PaddingMode.PKCS7;
        ICryptoTransform cTransform = rDel.CreateDecryptor();
        return cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
    }

我真的不知道我做错了什么,因为我可以很好地加密它。我要解密的文件是 11 kb。

【问题讨论】:

  • 你确定这是你得到的例外吗?当您尝试设置密钥时,您应该得到一个,因为它的长度无效。
  • @Lee 是的,我确信那是我得到的例外,那不是我真正的钥匙。真正的密钥要长得多,我用另一个密钥对其进行了测试,然后它出现了一个实际上与密钥有关的错误。
  • 请添加您的加密代码。

标签: c# encryption rijndael


【解决方案1】:

您应该使用CryptoStream 对象,它会自动调用正确的ICryptoTransform.TransformFinalBlockICryptoTransform.TransformBlock 方法。

您尚未发布加密代码,但请检查 Padding 模式是否相同(即PaddingMode.PKCS7)并且初始向量设置为相同的字符串。

【讨论】:

    猜你喜欢
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    相关资源
    最近更新 更多