使用gzip保护xml文件的密码

时间:2011-05-25 14:41:41

标签: c# xml zip password-protection file-association

对于这个古老的问题,所有人和女孩都是时候了,你如何使用C#密码保护xml文件? 我也在C#中创建了该文件(不像是相关的),现在我需要密码保护它,以便我可以通过电子邮件发送给客户,任何建议人员,

此外,我尝试使用C#将xml文件放入zip文件中,并且在执行此操作时文件将丢失其扩展名,并且它使用我找到的每个方法执行此操作,因此我真的只想密码保护原始文件。


我应该更清楚这一点,文件永久丢失它的扩展名,当最终用户解压缩它时,它不再是一个xml文件,它只是一个带有名字,没有关联或任何东西的文件

好了改变这一点,已经指出了很多,xml没有得到密码保护,因为它只是文本,而不是问题,所以让我们改变一下它的ziping怎么样

    FileStream sourceFile = File.OpenRead(@"C:\sample.xml");
    FileStream destFile = File.Create(@"C:\sample.zip");

    GZipStream compStream = new GZipStream(destFile, CompressionMode.Compress);

    try
    {
        int theByte = sourceFile.ReadByte();
        while (theByte != -1)
        {
            compStream.WriteByte((byte)theByte);
            theByte = sourceFile.ReadByte();
        }
    }
    finally
    {
        compStream.Dispose();
    } 

上面的代码压缩文件,但是当文件被最终用户解压缩时,文件丢失了它的xml扩展名并且随之而来的是文件关联

好吧我有更新我想出了如何保持文件不丢失它的扩展名,如果我将输出文件名更改为sample.xml.zip,系统处理得很好,授予输出文件出来读取就像这个,sample.xml.zip,但winzip从不打开它,7zip也没有,所以我对此非常满意,现在密码保护的东西是我还没想到的东西。

仅供参考,我的新代码。

    FileStream sourceFile = File.OpenRead(@"C:\sample.xml");
    FileStream destFile = File.Create(@"C:\sample.xml.zip");

    GZipStream compStream = new GZipStream(destFile, CompressionMode.Compress);

    try
    {
        int theByte = sourceFile.ReadByte();
        while (theByte != -1)
        {
            compStream.WriteByte((byte)theByte);
            theByte = sourceFile.ReadByte();
        }
    }
    finally
    {
        compStream.Dispose();
    } 

4 个答案:

答案 0 :(得分:3)

  

并且在执行此操作时文件丢失   这是扩展

您的意思是,文件名从MyXMLFile.xml更改为MyXMLFile.zip
你无能为力,绝对没有。

xml文件是纯文本文件,如果不以某种方式对其进行加密,则无法密码保护文件。加密后,它不再是一个Xml文件,它是一个加密文件,解密时会生成一个Xml文件。

将您的xml文件加密到受密码保护的Zip文件中是解决此问题的完美解决方案。

一旦最终用户解压缩zip文件,他们就会将其视为Xml文件,然后一切都会好的。

希望这有帮助。

答案 1 :(得分:2)

您无法以Word文档的方式密码保护XML文件。您可以在Word文档上放置密码的原因是因为Word和其他可以读取Word文档的程序可能支持密码保护。什么都不能阻止程序完全忽略密码(除非使用密码作为密钥生成器以某种方式加密文件)。

XML文件只是文本文件。如果不将密码保存在受密码保护的容器(例如zip文件)中,则无法保护密码。当你压缩XML文件时,它被放在一个zip存档中,扩展名为.zip,表示它是一个zip文件。

然后由接收zip文件的人提供正确的密码才能解压缩zip文件并检索原始XML文件。

我不相信.NET支持管理.zip文件。您可以使用DotNetZip之类的第三方库来帮助您解决此问题。

答案 2 :(得分:1)

加密文件然后解密它将是一种选择。 This article提供有关加密和解密的一些信息。

答案 3 :(得分:1)

我认为一个很好的选择是压缩它和密码保护zip文件。不是xml。像dotnetzip这样的图书馆可以为此工作并且非常直接。