我的目标是混淆 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 文件。
编辑:这只发生在我删除我的一个参数并保存配置时。就好像序列化程序在最后写了一些东西以保持文件大小相同。