2

我正在尝试使用 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。

4

1 回答 1

0

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

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

于 2013-03-31T19:15:08.047 回答