私の目的は、ユーザーが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つを削除して構成を保存した場合にのみ発生します。これは、ファイルを同じサイズに保つために、シリアライザーが最後に何かを書き込むかのようです。