Защита паролем XML-файла с помощью gzip - PullRequest
1 голос
/ 25 мая 2011

Ладно, ребята, пришло время задать давний вопрос, как вы защищаете паролем XML-файл с помощью C #?Я также создал файл в C # (не так, как если бы это было актуально), и теперь мне нужно защитить его паролем, чтобы я мог отправить его по электронной почте клиентам, любые предложения, ребята,

Также я попытался поставитьXML-файл в zip-файл, используя C #, и после этого файл теряет свое расширение, и он делает это с каждым найденным мною методом, поэтому мне бы очень хотелось защитить исходный файл паролем.


Я должен был быть более ясным в этом, файл теряет свое расширение навсегда, когда конечный пользователь разархивирует его, это больше не файл 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();
    } 

thisПриведенный выше код архивирует файл, но когда файл распаковывается конечным пользователем, файл теряет расширение XML и вместе с ним ассоциируется файл

хорошо, у меня естьpdate Я выяснил, как сохранить файл от потери его расширения, если я изменил имя выходного файла на 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 ]

3 голосов
/ 25 мая 2011

и после этого файл теряет это расширение

Что вы имеете в виду, имя файла меняется с MyXMLFile.xml на MyXMLFile.zip?
С этим ничего не поделаешь, абсолютно ничего.

XML-файл - это простой текстовый файл, вы не можете защитить паролем файл, не шифровав его. После того, как вы зашифруете его, он больше не будет XML-файлом, это зашифрованный файл, который при расшифровке создаст XML-файл.

Шифрование вашего xml-файла в Zip-файл, защищенный паролем, является отличным решением этой проблемы.

Как только конечный пользователь разархивирует ZIP-файл, он увидит его в виде XML-файла, и тогда все будет хорошо.

Надеюсь, это поможет.

2 голосов
/ 25 мая 2011

Вы не можете защитить паролем файл XML, как вы можете с документом Word. Причина, по которой вы можете разместить пароли в документах Word, заключается в том, что Word и другие программы, которые могут читать документы Word, поддерживают защиту паролем. Ничто не мешает программе полностью игнорировать пароль (если файл не зашифрован с использованием пароля в качестве генератора ключей).

XML-файлы - это просто текстовые файлы. Защита паролем невозможна без помещения их в защищенный паролем контейнер (например, в zip-файл). Когда вы архивируете XML-файл, он помещается в zip-архив с расширением .zip, чтобы указать, что это zip-файл.

Затем лицо, получающее zip-файл, может предоставить правильный пароль для распаковки zip-файла и получения исходного XML-файла.

Я не верю, что .NET имеет какую-либо поддержку для управления файлами .zip. Вы можете использовать стороннюю библиотеку, например DotNetZip , чтобы помочь вам в этом.

1 голос
/ 25 мая 2011

Я думаю, что хорошим вариантом было бы заархивировать его и защитить паролем файл zip.Не XML.Библиотека вроде dotnetzip может работать для этого и довольно проста.

1 голос
/ 25 мая 2011

Шифрование файла и последующее его дешифрование будет одним из вариантов. Эта статья дает некоторую информацию о шифровании и дешифровании.

...