我的目標是混淆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文件。
編輯: 只有當我刪除我的一個參數並保存配置時纔會發生這種情況。就好像串行器在最後寫一些東西來保持文件的大小一樣。
你爲什麼序列化流一次?也許你可以直接寫入磁盤。 –
我將一個文件序列化成XML。 – Serge