0

私の目的は、ユーザーがXML構成ファイルを編集できないように、XML構成ファイルを難読化することです。私は次のコードを使用します:

        XmlSerializer xs = new XmlSerializer(typeof(this));

        SymmetricAlgorithm symmetricAlgorithm = DES.Create();
        symmetricAlgorithm.Key = new byte[8] { 1, 2, 3, 4, 5, 6, 7, 8 };
        symmetricAlgorithm.Mode = CipherMode.ECB;

        using (FileStream fs = File.OpenWrite(filename))
        {
            using (CryptoStream cryptoStream = new CryptoStream(fs, symmetricAlgorithm.CreateEncryptor(), CryptoStreamMode.Write))
            {
                xs.Serialize(cryptoStream, this);
            }
        }

ほとんどの場合、正常に動作します。ただし、ファイルを書き込むときに、ファイルの最後に最後の数行(最新の場合は211バイト)が追加されることがあります。復号化は引き続き正常に機能しますが、XMLファイルに逆シリアル化されなくなります。

編集:これは、パラメーターの1つを削除して構成を保存した場合にのみ発生します。これは、ファイルを同じサイズに保つために、シリアライザーが最後に何かを書き込むかのようです。

4

3 に答える 3

1

代わりにEncryptedXmlを使用して、フレームワークに暗号化/復号化について心配させてはどうでしょうか。

于 2012-10-23T13:59:35.673 に答える
1

書き込み用にファイルを開く前に、ファイルを空にしてください。Microsoft ドキュメントの備考セクションを確認してください。

于 2012-10-23T16:58:49.723 に答える
0

ここで提案されているように、別のアプローチで問題を解決し、CryptoStream の代わりに DeflateStream を使用しました: c# encrypt xml file

于 2012-10-23T19:04:05.610 に答える