加密文件会附加最后一个文件

时间:2012-10-23 13:55:06

标签: c# .net xml encryption

我的目标是混淆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文件。

编辑: 仅当我删除其中一个参数并保存配置时才会发生这种情况。好像序列化器在末尾写了一些东西来保持文件的大小相同。

3 个答案:

答案 0 :(得分:1)

为什么不使用EncryptedXml而让框架担心加密/解密。

答案 1 :(得分:1)

在打开文件进行写入之前清空文件。查看Microsoft documentation的备注部分。

答案 2 :(得分:0)

使用不同的方法解决问题,如此处所建议的,使用DeflateStream而不是CryptoStream: c# encrypt xml file