c#encrypt xml文件

时间:2010-10-25 18:15:24

标签: c# xml encryption

告诉我加密XML文件的最简单方法。它是一个用于某些配置的文件,不希望人们乱用它。安全性不是问题,因为它是一种私人工具。

4 个答案:

答案 0 :(得分:6)

如果您不关心安全性,只需将文件与散列一起保存即可。即:

your.xml 和 your.xml.hash

例如,您可以使用System.Security.Cryptography.MD5Managed。它只是保存xml文件,然后保存文件本身的哈希值。阅读时,只需计算哈希值,与保存的内容进行比较,然后将xml文件作为常规文件使用。

当然,xml文件中的信息未加密,可以读取,但如果您编辑该文件,则哈希将不正确,并且您的程序将发现该尝试。保持简单:)

答案 1 :(得分:3)

如果您只是想让修改更难,请通过DeflateStream发送。作为额外的好处,文件将更小。

答案 2 :(得分:1)

DPAPI是保护Windows系统内容的最简单方法 - 请参阅ProtectedData.Protect作为初学者。

答案 3 :(得分:0)

我可能只是在读取/写入之前通过这个包装DPAPI的类运行整个文件。生成的输出经过编码,因此可以将其写为文本文件:

using System;
using System.Security.Cryptography;
using System.Text;

/// <summary>
/// used for encryption and decryption
/// </summary>
public static class DataProtector
{
   private const string EntropyValue = "secret";

   /// <summary>
   /// Encrypts a string using the DPAPI.
   /// </summary>
   /// <param name="stringToEncrypt">The string to encrypt.</param>
   /// <returns>encrypt data</returns>
   public static string EncryptData(string stringToEncrypt)
   {
      byte[] encryptedData = ProtectedData.Protect(Encoding.Unicode.GetBytes(stringToEncrypt), Encoding.Unicode.GetBytes(EntropyValue), DataProtectionScope.LocalMachine);
      return Convert.ToBase64String(encryptedData);
   }

   /// <summary>
   /// Decrypts a string using the DPAPI.
   /// </summary>
   /// <param name="stringToDecrypt">The string to decrypt.</param>
   /// <returns>decrypted data</returns>
  public static string DecryptData(string stringToDecrypt)
   {
      byte[] decryptedData = ProtectedData.Unprotect(Convert.FromBase64String(stringToDecrypt), Encoding.Unicode.GetBytes(EntropyValue), DataProtectionScope.LocalMachine);
      return Encoding.Unicode.GetString(decryptedData);
   }
}