1

C# を使用して xml ファイルをパスワードで保護するにはどうすればよいでしょうか。私は実際にC#でもファイルを作成しました(それが関連している場合ではありません)。今、パスワードで保護する必要があるため、クライアントや提案の人にメールで送信できます。

また、C#を使用してxmlファイルをzipファイルに入れようとしましたが、これを行うとファイルの拡張子が失われ、見つけたすべての方法でこれが行われるため、元のファイルをパスワードで保護したいと思います。


私はこれについてもっと明確にする必要がありました.ファイルは拡張子を永久に失います.エンドユーザーがそれを解凍すると、もはやxmlファイルではありません.名前が付いた単なるファイルであり、関連付けなどはありません.

OK、これを少し変更します。xml は単なるテキストであり問題ではないため、パスワードで保護されていないことが多く指摘されています。

    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 拡張子が失われ、ファイルの関連付けが失われます。

OK、更新があります。ファイルの拡張子が失われないようにする方法を見つけました。出力ファイル名をsample.xml.zipに変更すると、システムはそれをうまく処理します。出力ファイルはこのように読み出されます。サンプル.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

4 に答える 4

3

これを行うと、ファイルの拡張子が失われます

MyXMLFile.xmlファイル名が からに変わるってどういうことMyXMLFile.zip
それについてあなたができることは何もありません、絶対に何もありません。

xml ファイルはプレーン テキスト ファイルです。何らかの方法で暗号化しないと、ファイルをパスワードで保護することはできません。暗号化すると、Xml ファイルではなくなり、暗号化されたファイルになり、復号化すると Xml ファイルが生成されます。

xml ファイルをパスワードで保護された Zip ファイルに暗号化することは、この問題に対する完全な解決策です。

エンド ユーザーが zip ファイルを解凍すると、それが Xml ファイルとして表示され、すべて問題ありません。

お役に立てれば。

于 2011-05-25T14:45:55.993 に答える
2

Word 文書の場合とは異なり、XML ファイルをパスワードで保護することはできません。Word 文書にパスワードを設定できる理由は、Word およびおそらく Word 文書を読み取ることができる他のプログラムがパスワード保護をサポートしているためです。プログラムがパスワードを完全に無視することを妨げるものは何もありません (ファイルが何らかの方法でパスワードをキー ジェネレータとして使用して暗号化されていない限り)。

XML ファイルは単なるテキスト ファイルです。パスワードで保護されたコンテナー (zip ファイルなど) に配置しないと、パスワードで保護することはできません。XML ファイルを圧縮すると、それが zip ファイルであることを示すために .zip の拡張子が付いた zip アーカイブ内に配置されます。

zip ファイルを解凍して元の XML ファイルを取得するには、zip ファイルの受信者が正しいパスワードを入力する必要があります。

.NET が .zip ファイルの管理をサポートしているとは思えません。DotNetZipなどのサードパーティ ライブラリを使用して、これを支援できます。

于 2011-05-25T14:49:36.517 に答える
1

ファイルを暗号化してから復号化することは、1 つのオプションです。この記事では、暗号化と復号化に関する情報を提供します。

于 2011-05-25T14:48:48.230 に答える
1

良いオプションは、zip ファイルを圧縮してパスワードで保護することだと思います。xml ではありません。dotnetzip のようなライブラリはこれで機能し、非常に簡単です。

于 2011-05-25T14:50:03.100 に答える