C#如何做加密配置? 写了一套程序,配置目前是xml存储的但是xml里包含的部分结构不想让使用者知道如何做一个二进制的配置让用户打开看到的都是乱码? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有个东西叫做BinaryWriter写东西到一个文件中,用记事本打开是乱码 但是最好写之前先用算法加密,使用的时候先读出来解密再用。 可以用ProtectedConfigurationProvider的派生类来做xml保护。优点是读的时候不需要额外步骤。注意:系统现成的RSAProtectedConfigurationProvider可能不符合你的需要,因为它把解密钥匙放在计算机的密钥容器下,而其他机器的密钥容器肯定跟你的开发机器不一样。这种情况,可以自己实现ProtectedConfigurationProvider,用自己的密码来加密。具体例子见:http://msdn.microsoft.com/zh-cn/library/system.configuration.protectedconfigurationprovider(v=vs.80).aspx 如果仅仅是简单掩盖原数据,即不想让原数据暴露在外,可以使用Base64对数据快速加密,优点是可以加密任何数据,然后转换成加密后的文字再放入xml中。当让如果是非常重要的数据,不仅不想让原数据暴露在外,而且尽量使用户很难得到源数据(没有加密方法是100%安全的),可以参考使用System.Security.Cryptography中更专业的加密方法,如AES,RSA,用这些方法将XML文件整体加密。后者内容较多,你可以在网上有针对的查阅和学习下,针对前者,下面提供一个简单的base64加解密字符串的参考函数 string info = "abcdefg 一二三四五"; Console.WriteLine("加密前文字:" + info); string encrypt = Convert.ToBase64String(Encoding.Default.GetBytes(info)); Console.WriteLine("加密后文字:" + encrypt); Console.WriteLine("解密后文字:" + Encoding.Default.GetString(Convert.FromBase64String(encrypt))); 结构看到了无所谓,主要是xml节点里面的值,你把值加密就OK啦! 谢谢楼上各位,我主要是结构也需要加密所以采用RSAProtectedConfigurationProvider方式 这种数组如何访问 vs2005组件名称显示问题 c#线程优先级的疑问! 关于TCP和UDP通信的一些困惑 安装部署的问题,十分不爽 讨论C#类的使用范围!!!希望大虾谈谈 从Sql 2000向Sql 2005的转变问题 网络搜索下载的编程问题 TcpListener和TcpClient的问题 求助,如何在下拉条中显示两个表的内容? 用C#调用API GetWindowExtEx 的问题。在线等。 C#中的打印问题?
优点是读的时候不需要额外步骤。注意:
系统现成的RSAProtectedConfigurationProvider可能不符合你的需要,因为它把解密钥匙放在计算机的密钥容器下,而其他机器的密钥容器肯定跟你的开发机器不一样。这种情况,可以自己实现ProtectedConfigurationProvider,用自己的密码来加密。具体例子见:
http://msdn.microsoft.com/zh-cn/library/system.configuration.protectedconfigurationprovider(v=vs.80).aspx
Console.WriteLine("加密前文字:" + info);
string encrypt = Convert.ToBase64String(Encoding.Default.GetBytes(info));
Console.WriteLine("加密后文字:" + encrypt);
Console.WriteLine("解密后文字:" + Encoding.Default.GetString(Convert.FromBase64String(encrypt)));
所以采用RSAProtectedConfigurationProvider方式