如何将XML写入加密文件?

3
我需要将XML数据写入加密文件。我可以读写加密文件,但我不知道如何跳过文件输入部分并从MemoryStream对象中进行操作。
目前我已经有了一些代码。基本上,我只需要获取一个Byte[]数组以便对其进行标准加密。
感谢您提供的出色帮助。我很快就会测试它。
编辑:在测试后,当我尝试关闭MemoryStream对象时,我遇到了“无法访问已关闭的流”异常。
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();
2个回答

2

将内容写入MemoryStream中,然后使用MemoryStream.ToArray()方法


谢谢,我现在正在使用MemoryStream。 - kevp
搞定了,谢谢。我的第二个错误是以错误的顺序关闭对象。 - kevp

1

在构造函数中没有不需要参数的StreamWriter。请写入到CryptoStream,将您的真实目标流作为目标。

编辑:您说“我的标准加密”。您是使用标准的.NET加密还是使用自定义方法滚动自己的算法?此解决方案可能依赖于您将其修订为ICryptoTransform实现。


我发布了我试图做的事情。我刚从学校毕业,这是他们在一个任务中教给我们使用的东西。如果有更好的方法,我也不会感到惊讶,但我会尝试。 - kevp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接