2012-10-23 86 views
0

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

編輯: 只有當我刪除我的一個參數並保存配置時纔會發生這種情況。就好像串行器在最後寫一些東西來保持文件的大小一樣。

+0

你爲什麼序列化流一次?也許你可以直接寫入磁盤。 –

+0

我將一個文件序列化成XML。 – Serge

回答

0

問題解決了用不同的方法,因爲在這裏建議,使用DeflateStream替代的CryptoStream: c# encrypt xml file

1

爲什麼不使用EncryptedXml而是讓Framework擔心加密/解密。

+0

我喜歡它,不幸的是我使用.NET 4.0。 – Serge

+0

@Serge'ExcryptedXml'從.NET 2.0開始可用。 – James