使用C#XNA隐藏重要XML文件的方法
我正在使用XNA开发一个游戏,我正在将我的所有数据(如对话框、文本和用户偏好)存储在一个XML文件中,但我想知道如何隐藏所有这些数据,以免那些打开我存储文件的文件夹的人更改这些数据。感谢示例扩展类压缩/解压缩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
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我过去曾使用此代码项目进行简单的文件加密