我需要将XML数据写入加密文件。我可以读取/写入加密文件,但是我无法弄清楚如何跳过文件输入部分并从MemoryStream对象执行此操作。
这是我到目前为止所拥有的。基本上我只需要让Byte []在其上执行标准加密。
我很欣赏这个令人敬畏的输入。我将很快对此进行测试。
编辑:测试后,当我尝试关闭内存流对象时,我收到“无法访问已关闭的流”异常。
MemoryStream ms = new MemoryStream();
XmlTextWriter xmlwriter = new XmlTextWriter(ms,Encoding.ASCII);
FileStream EncryptedFileStream = new FileStream(file, FileMode.Create, FileAccess.Write);
DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
DES.Key = ASCIIEncoding.ASCII.GetBytes("AAAAAAAA");
DES.IV = ASCIIEncoding.ASCII.GetBytes("AAAAAAAA");
ICryptoTransform desEncrypt = DES.CreateEncryptor();
CryptoStream cryptostream = new CryptoStream(EncryptedFileStream, desEncrypt, CryptoStreamMode.Write);
//create xml document
byte[] bytearray = new byte[ms.Length];
ms.Read(bytearray, 0, bytearray.Length);
cryptostream.Write(bytearray, 0, bytearray.Length);
cryptostream.Close();
ms.Close();
EncryptedFileStream.Close();
答案 0 :(得分:2)
写入MemoryStream并使用MemoryStream.ToArray()
答案 1 :(得分:1)
没有StreamWriter这样的东西在构造函数中没有任何东西。写入以您的真实目标流为目标的CryptoStream。
编辑:你说“我的标准加密”。您使用的是标准.NET加密,还是使用自定义方法滚动自己的算法?此解决方案可能依赖于您将其修改为ICryptoTransform实现。