写了一套程序,配置目前是xml存储的
但是xml里包含的部分结构不想让使用者知道
如何做一个二进制的配置
让用户打开看到的都是乱码?

解决方案 »

  1.   

    有个东西叫做BinaryWriter写东西到一个文件中,用记事本打开是乱码 但是最好写之前先用算法加密,使用的时候先读出来解密再用。
      

  2.   

    可以用ProtectedConfigurationProvider的派生类来做xml保护。
    优点是读的时候不需要额外步骤。注意:
    系统现成的RSAProtectedConfigurationProvider可能不符合你的需要,因为它把解密钥匙放在计算机的密钥容器下,而其他机器的密钥容器肯定跟你的开发机器不一样。这种情况,可以自己实现ProtectedConfigurationProvider,用自己的密码来加密。具体例子见:
    http://msdn.microsoft.com/zh-cn/library/system.configuration.protectedconfigurationprovider(v=vs.80).aspx
      

  3.   

    如果仅仅是简单掩盖原数据,即不想让原数据暴露在外,可以使用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)));
      

  4.   

    结构看到了无所谓,主要是xml节点里面的值,你把值加密就OK啦!
      

  5.   

    谢谢楼上各位,我主要是结构也需要加密
    所以采用RSAProtectedConfigurationProvider方式