使用AES加密任何文件

时间:2014-04-29 19:57:42

标签: c# encryption aes

我使用这样的代码来加密文件。

            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或图像文件格式。我可以对代码进行哪些更改以将功能扩展到所有此类文件类型?

1 个答案:

答案 0 :(得分:5)

您希望使用BinaryReader和BinaryWriter来执行文件I / O.普通的StreamReader将尝试使用特定的编码读取字节,因为它实现了TextReader并且会破坏原始数据类型。这就是纯文本.txt和.xml工作的原因,而.docx文件没有。