【发布时间】:2012-10-23 13:55:06
【问题描述】:
我的目标是混淆 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 文件。
编辑: 仅当我删除其中一个参数并保存配置时才会发生这种情况。就好像序列化器在最后写了一些东西来保持文件的大小一样。
【问题讨论】:
-
为什么又要序列化Stream?也许你可以将它直接写入磁盘。
标签: c# .net xml encryption