【问题标题】:How do I write XML to an encrypted file?如何将 XML 写入加密文件?
【发布时间】:2012-05-10 16:45:57
【问题描述】:

我需要将 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();

【问题讨论】:

    标签: c# xml encryption


    【解决方案1】:

    写入 MemoryStream 并使用 MemoryStream.ToArray()

    【讨论】:

    • 谢谢,我现在正在使用内存流
    • 想通了,谢谢。我的第二个错误是以错误的顺序关闭对象。
    【解决方案2】:

    没有像 StreamWriter 这样的东西,它在构造函数中不接受任何内容。写入以您的真实目标流为目标的 CryptoStream。

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

    【讨论】:

    • 我发布了我正在尝试做的事情。我刚从学校毕业,这是他们教我们在作业中使用的。如果有更好的方法,我不会感到惊讶,但我正在尝试。
    猜你喜欢
    • 2016-09-23
    • 2012-12-10
    • 2014-06-02
    • 2010-09-21
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    相关资源
    最近更新 更多