c#加密xml文件

Posted

技术标签:

【中文标题】c#加密xml文件【英文标题】:c# encrypt xml file 【发布时间】:2010-10-25 18:15:24 【问题描述】:

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

【问题讨论】:

如果它是一个私人工具,你想保护谁的文件?你自己? :P 哈哈,好问题。只是为了让人们不要碰他们不应该碰的东西。 您可以使用标准的 app.config(或 web.config)文件还是必须是单独的 XML 文件? 必须是 XML 文件 C# Encrypt an XML File.的可能重复 【参考方案1】:

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

你的.xml 和 你的.xml.hash

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

当然,xml 文件中的信息没有加密,是可以读取的,但是如果您编辑文件,那么哈希值将不正确,您的程序会发现该尝试。保持简单:)

【讨论】:

+1 。这很受欢迎。不过,通常您会希望以某种任意方式稍微修改哈希值,以使逆向工程变得更加棘手。 同意,但我对此有所保留。最有可能的是,想要搞砸事情的用户不知道如何创建一个新的哈希;)如果用户真的有知识,那么,好吧..从禁用对用户的写访问开始,他们为什么要这样做对配置文件有写权限吗? :)【参考方案2】:

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

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

在读/写之前,我可能只是通过这个封装了 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);
   

【讨论】:

以上是关于c#加密xml文件的主要内容,如果未能解决你的问题,请参考以下文章

C# RSA加密算法PEM格式转换XML

C# RSA加密算法PEM格式转换XML

SQL Server FOR XML PATH('')) 加密数据需要在 C# 中解密

c#中xml文件

怎么用C#生成一个完整的xml文件

C#中对xml文件的写操作