C#建议将文本写入文件的最佳方式,以便在记事本中打开时用户无法理解
寻找将字符串写入文件的简单方法的建议,以使生成的文件在记事本中不可读/不可编辑。我曾想过使用一些严肃的加密技术,但我认为这对于我所需要的东西来说太过分了。只是寻找一个简单的不可读的文本格式转换和从 使用二进制格式化程序将其序列化如何C#建议将文本写入文件的最佳方式,以便在记事本中打开时用户无法理解,c#,encryption,text,C#,Encryption,Text,寻找将字符串写入文件的简单方法的建议,以使生成的文件在记事本中不可读/不可编辑。我曾想过使用一些严肃的加密技术,但我认为这对于我所需要的东西来说太过分了。只是寻找一个简单的不可读的文本格式转换和从 使用二进制格式化程序将其序列化如何 这将很好地确保在记事本中打开文件的人最终只会得到GobbleDeBook。但是(不得不说)如果你重视人们看不到或弄乱这些数据,就需要对其进行真正的加密。谷歌将其翻译成法语,然后再翻译回来。如果您的用户说法语,这将不起作用。如果不需要加密,那么我建议使用Convert
这将很好地确保在记事本中打开文件的人最终只会得到GobbleDeBook。但是(不得不说)如果你重视人们看不到或弄乱这些数据,就需要对其进行真正的加密。谷歌将其翻译成法语,然后再翻译回来。如果您的用户说法语,这将不起作用。如果不需要加密,那么我建议使用Convert.ToBase64String/Convert.FromBase64String
简单可靠。加密,或者编码(例如Base64编码?——或者更简单的编码?)。这将使其不可读,但仍可编辑。您可以对其进行Base64编码:
string text = "My quasi secret text.";
byte[] buffer = System.Text.UTF8Encoding.GetBytes(text);
string protectedText = Convert.ToBase64String(buffer);
File.WriteAllText(filename, protectedText)
编辑:更新为UTF8Encoding以处理unicode。超级简单的功能是:
Convert.ToBase64String()加密:把(信息)编成密码或加以歪曲,使之在没有适当的解密设备的情况下无法被理解
根据定义,您正在尝试加密数据。唯一的区别是你只需要一个足够强大的加密,不允许外行访问它的内容
正如其他人所提到的,使用Base64可以有效地针对普通用户加密数据。因此,最后我就是这么做的
要写入数据,请执行以下操作:
//Write the text in a way the user wont recognize if they open the file in notepad.
byte[] buffer = System.Text.ASCIIEncoding.UTF8.GetBytes(data);
string protectedText = Convert.ToBase64String(buffer);
File.WriteAllText(UserToUserLevelDataFile, protectedText);
string longText = File.ReadAllText(UserToUserLevelDataFile);
data = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(longText));
要读取数据:
//Write the text in a way the user wont recognize if they open the file in notepad.
byte[] buffer = System.Text.ASCIIEncoding.UTF8.GetBytes(data);
string protectedText = Convert.ToBase64String(buffer);
File.WriteAllText(UserToUserLevelDataFile, protectedText);
string longText = File.ReadAllText(UserToUserLevelDataFile);
data = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(longText));
很有魅力,谢谢大家的创意 奇怪的问题…你们真的可以打开记事本上的任何文件,所以也许你们应该把你们的问题弄清楚。如果您试图混淆文件中的数据,那么加密可能是您唯一的选择。您所说的是加密,即使它是以一种简单的方式完成的。您可以执行一些愚蠢的加密,例如按位大小/2旋转所有字符。@Mehrdad在我看来并不奇怪,听起来OP只是想防止用户把app.config搞砸,而@Tony Casale只有在他以某种方式加密的情况下才是加密。将其转换为Base64并不是对其进行加密,而是对其进行模糊处理,类似于将其存储为二进制文件。你不是在加密它,而是在用标准文本编辑器对它进行模糊处理。MD5对字符串进行哈希运算,然后根据彩虹表运行结果以找到匹配的输入,然后使用web服务打电话告诉你答案?不担心真正的黑客,只担心普通用户的阅读和更改。谢谢,这会有用的。+1如果你不想让文件直接可读,那么这是正确的选项。我认为这是一个选项,而不是选项。谢谢,我也可以这样做。@Chris Marisic:什么,你不喜欢法语?很有趣,但我不想将文本转换成另一种语言。但这是一个很好的开箱即用的想法。谢谢。我喜欢这个,我想这就是我要做的。我不担心编辑,我只想告诉用户是否编辑了它。这应该使用Unicode编码而不是ASCII。你的权利,我应该用更好的措辞。感谢您的回复。您甚至可以在转换为Base64之前(或之后)应用ROT13,以进行更强大的模糊处理。