c#文件编码和解码,不可读

c#文件编码和解码,不可读,c#,file,encoding,C#,File,Encoding,当你用txt编辑器打开某个文件时,编码类型无法读取,它只是一堆乱七八糟的字符,我想在保存文件时将其与我的程序一起使用,以及如何在c#中使用: 然后在加载时对其进行解码。 那么我应该用什么编码呢 我想将一些字符串(例如“Sweet”)保存到文件中,如果在文本编辑中打开文件,您将看到类似“nfgkdn@{3!” 只是一个简单的例子 Obfuscate("a.txt", "hello"); string orgstr = Deobfuscate("a.txt"); a.txt中的数据:Mj82NjU

当你用txt编辑器打开某个文件时,编码类型无法读取,它只是一堆乱七八糟的字符,我想在保存文件时将其与我的程序一起使用,以及如何在c#中使用:

然后在加载时对其进行解码。 那么我应该用什么编码呢

我想将一些字符串(例如“Sweet”)保存到文件中,如果在文本编辑中打开文件,您将看到类似“nfgkdn@{3!”

只是一个简单的例子

Obfuscate("a.txt", "hello");
string orgstr = Deobfuscate("a.txt");
a.txt中的数据
Mj82NjU=

void Obfuscate(string fileName, string data)
{
    var bytes = Encoding.UTF8.GetBytes(data);
    for (int i = 0; i < bytes.Length; i++) bytes[i] ^= 0x5a;
    File.WriteAllText(fileName,Convert.ToBase64String(bytes));
}

string Deobfuscate(string fileName)
{
    var bytes = Convert.FromBase64String(File.ReadAllText(fileName));
    for (int i = 0; i < bytes.Length; i++) bytes[i] ^= 0x5a;
    return Encoding.UTF8.GetString(bytes);
}
void混淆(字符串文件名、字符串数据)
{
var bytes=Encoding.UTF8.GetBytes(数据);
对于(int i=0;i
我想将一些字符串(例如“Sweet”)保存到文件中,如果在文本编辑中打开文件,您将看到类似“nfgkdn@{3!”

只是一个简单的例子

Obfuscate("a.txt", "hello");
string orgstr = Deobfuscate("a.txt");
a.txt中的数据
Mj82NjU=

void Obfuscate(string fileName, string data)
{
    var bytes = Encoding.UTF8.GetBytes(data);
    for (int i = 0; i < bytes.Length; i++) bytes[i] ^= 0x5a;
    File.WriteAllText(fileName,Convert.ToBase64String(bytes));
}

string Deobfuscate(string fileName)
{
    var bytes = Convert.FromBase64String(File.ReadAllText(fileName));
    for (int i = 0; i < bytes.Length; i++) bytes[i] ^= 0x5a;
    return Encoding.UTF8.GetString(bytes);
}
void混淆(字符串文件名、字符串数据)
{
var bytes=Encoding.UTF8.GetBytes(数据);
对于(int i=0;i
任何编码,只要您都使用相同的编码进行读写。您应该使用unicode编码,如UTF-8。因为它可以对当今所有语言中使用的所有字符进行编码。否则,您会在文件中得到一堆
??????来代替无法在目标编码中编码的字符。Un如果我没有误读(我很可能已经误读了),我得到的印象是他从一个未知编码的文件开始,并想确定编码,这样他就可以读取并用相同的编码重新保存它。(我可能有点离谱,但我就是这样读问题的)@Esailija Unicode是16位,UTF8是8位。它们不一样。你必须使用UTF16来近似Unicode。你似乎在考虑加密,而不是编码。你希望能够以某种格式保存数据,这种格式基本上只能由你的程序读取,因为你知道解密密钥。有办法做到这一点,所以我甚至内置了一些。我不知道它们。任何编码,只要你们都使用相同的编码进行读写。你们应该使用unicode编码,比如UTF-8。因为它可以对现在所有语言中使用的所有字符进行编码。否则,你会在文件中得到一堆无法编码的字符在目标编码中进行编码。除非我误读了这一点(我可能已经误读了),否则我得到的印象是,他是从一个未知编码的文件开始的,并希望确定编码,以便他可以读取并使用相同的编码重新保存它。(我可能有点离谱,但这就是我阅读问题的方式)@Esailija Unicode是16位,UTF8是8位。它们不一样。你必须使用UTF16来近似Unicode。你似乎在考虑加密,而不是编码。你希望能够以某种格式保存数据,这种格式基本上只能由你的程序读取,因为你知道解密密钥。有办法做到这一点,所以我甚至内置了一些。我不知道它们。有效。虽然加密,但没有编码。我相信这会完全满足用户的要求。不过需要非常小心……这是基于字符串数据类型的,对于任何大数据块都会导致OutOfMemory异常。对于小字符串来说这很好,但对于任何大字符串来说几乎没有用aveFile。我在自己的代码中使用了类似的方法,并且不得不重新编写它以使用更多内存敏感的数据段,因为文件太大,无法装入单个字符串对象。@Nevyn a)它不是
加密
(如函数名所示)b)我不认为字符串的大小是OP的主要关注点。c)我不想让答案变得更复杂,只是为了让它能够处理庞大的数据。什么是加密,而是对原始文本的算法转换或替换。我理解你的观点,这些方法对大多数数据都非常有效。我只是指出了这一点您要运行此操作的数据块越大,占用的内存就越多,您达到字符串大小限制的可能性就越大。@Nevyn-来自维基百科-“在密码学中,加密是对消息(或信息)进行编码的过程,其编码方式使窃听者或黑客无法读取,但授权方可以”。显然,任何人都可以读取base64,这不是加密。我编写了自己的密码,也可以这样做,但在更大程度上,我对密码进行了哈希运算,并在所述哈希+动态偏移量的64字节上进行迭代。破解并非不可能,但算法的复杂性使得它太耗时,逻辑上不现实c供任何人尝试。如果你想要简单的模糊处理、加密大小比和性能,我强烈推荐这样一种策略。有效。虽然加密,但不是编码。我相信这会完全满足用户的要求。不过需要非常小心……这是基于字符串数据类型的,会导致OutOfMemory异常对于任何大的数据块,都可以使用ons。对于小字符串,这很好,但对于任何大的存储文件几乎没有用。我在自己的代码中使用了类似的方法,并且不得不重新编写它以使用更多内存敏感的数据段,因为文件太大,无法放入单个字符串对象。@Nevyn a)它不是
加密
(正如函数名所暗示的)b)我不认为字符串的大小是