我正在尝试使用rijndael algorythm加密和解密文件,但我收到错误“要加密的数据长度无效。”。我能够加密文件,但我不能解密它。这是我的解密功能;
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 :(得分:0)
您应该使用CryptoStream对象,该对象会自动调用正确的ICryptoTransform.TransformFinalBlock
和ICryptoTransform.TransformBlock
方法。
您尚未发布加密代码,但检查 Padding 模式是否相同(即PaddingMode.PKCS7
)并将启动向量设置为相同的字符串。