2013-03-31 74 views
2

我正在尝试使用rijndael algorythm加密和解密文件,但我一直在收到错误“要加密的数据的长度无效。”。我能够加密文件,但我无法解密它。这是我的解密功能;C#Rijndael CryptographicException“要加密的数据的长度无效。”

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。

+0

你确定这是你得到的例外吗?当你尝试设置密钥时,你应该得到一个,因为它的长度是无效的。 – Lee

+0

@李是的我相信那是我得到的例外,那不是我真正的关键。真正的关键是更长的时间,我用另一把钥匙测试过它,然后出现一个实际上与钥匙有关的错误。 – user2073973

+1

请添加您的加密代码。 –

回答

0

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

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

相关问题