【发布时间】:2014-04-30 17:03:12
【问题描述】:
我正在使用类似这样的代码来加密文件。
FileStream fsInput = new FileStream(ifile_path,
FileMode.Open,
FileAccess.Read);
FileStream fsEncrypted = new FileStream(ofile_path,
FileMode.Create,
FileAccess.Write);
AesCryptoServiceProvider AES = new AesCryptoServiceProvider();
AES.Mode = CipherMode.CBC;
AES.KeySize = 256;
iv = AES.IV;
AES.Key = key;
ICryptoTransform aesencrypt = AES.CreateEncryptor();
CryptoStream cryptostream = new CryptoStream(fsEncrypted,
aesencrypt,
CryptoStreamMode.Write);
byte[] bytearrayinput = new byte[fsInput.Length];
fsInput.Read(bytearrayinput, 0, bytearrayinput.Length);
cryptostream.Write(bytearrayinput, 0, bytearrayinput.Length);
cryptostream.Close();
fsInput.Close();
fsEncrypted.Close();
但是,虽然此代码成功地加密了 .txt 和 .xml 文件,但它不适用于其他文件类型,例如 .docx 或图像文件格式。我可以对代码进行哪些更改以将功能扩展到所有此类文件类型?
【问题讨论】:
-
会不会是用文本模式打开文件?为了缩小问题范围,您应该测试在没有加密的情况下读取和写入文件是否有效。如果它没有抛出问题的加密部分,如果它确实尝试您是否可以找到无法正确解密的加密部分的输入,并在可能的情况下抛出 IO 内容。
-
你试过bouncycastle吗?
标签: c# encryption aes