Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用C#XNA隐藏重要XML文件的方法_C#_Xml_File_Xna_Hide - Fatal编程技术网

使用C#XNA隐藏重要XML文件的方法

使用C#XNA隐藏重要XML文件的方法,c#,xml,file,xna,hide,C#,Xml,File,Xna,Hide,我正在使用XNA开发一个游戏,我正在将我的所有数据(如对话框、文本和用户偏好)存储在一个XML文件中,但我想知道如何隐藏所有这些数据,以免那些打开我存储文件的文件夹的人更改这些数据。感谢示例扩展类压缩/解压缩XML文档 public static class Extensions { public static void Compress(this XDocument doc, string name) { byte[] buffer = Encoding.UTF

我正在使用XNA开发一个游戏,我正在将我的所有数据(如对话框、文本和用户偏好)存储在一个XML文件中,但我想知道如何隐藏所有这些数据,以免那些打开我存储文件的文件夹的人更改这些数据。感谢示例扩展类压缩/解压缩XML文档

public static class Extensions
{
    public static void Compress(this XDocument doc, string name)
    {
        byte[] buffer = Encoding.UTF8.GetBytes(doc.ToString(SaveOptions.DisableFormatting));
        using (var ms = new MemoryStream(buffer.Length))
        {
            ms.Write(buffer,0,buffer.Length);
            ms.Seek(0, SeekOrigin.Begin);
            using (var fs = new FileStream(name, FileMode.Create))
            {
                using (var gzipStream = new GZipStream(fs, CompressionMode.Compress))
                {
                    ms.CopyTo(gzipStream);                        
                }
            }
        }
    }

    public static XDocument Decompress(string name)
    {
        using (var fs = new FileStream(name,FileMode.Open))
        {
            using (var ms = new MemoryStream())
            {
                using (var gzip = new GZipStream(fs,CompressionMode.Decompress))
                {
                    gzip.CopyTo(ms);
                }
                ms.Seek(0, SeekOrigin.Begin);
                string s = Encoding.UTF8.GetString(ms.ToArray());
                return XDocument.Parse(s);
            }
        }
    }
}
样本使用:

    static void Main(string[] args)
    {
        var doc = new XDocument(
            new XElement("Root", new XElement("Item1")));
        doc.Compress("test1");

        var doc2 = Extensions.Decompress("test1");
    }

您可以尝试加密或模糊处理。。。至少,gzip应该是不需要动脑筋的,并且可以为您节省一些存储空间。如果您只是想让gzip“肉眼”看不懂,那么G-Zip绝对是一个不错的选择。显然,任何人都可以解开G-Zip,但他们需要知道它实际上是G-Zip。+1回答不错,上面的评论也不错,我认为你建议在评论中加密可能是最安全的方式。FWIW我过去曾使用此代码项目进行简单的文件加密