C# 将文本作为字节数组持久化到平面文件

C# 将文本作为字节数组持久化到平面文件,c#,.net,text,C#,.net,Text,更新 这是为了在客户端隐藏我的公钥,让窥探者的眼睛更难找到它。是的,我知道公钥的目的是保持公共性,但我正在尝试减轻密钥替换攻击,除了模糊处理、程序集合并、程序集签名和其他一些措施外,这也是总体策略的一部分。因此,在我发送到客户端的代码中,我希望能够执行类似的操作 string publicKey = @"random characters" //don't want this in the code byte[] keyBytes = [............] //this should b

更新

这是为了在客户端隐藏我的公钥,让窥探者的眼睛更难找到它。是的,我知道公钥的目的是保持公共性,但我正在尝试减轻密钥替换攻击,除了模糊处理、程序集合并、程序集签名和其他一些措施外,这也是总体策略的一部分。因此,在我发送到客户端的代码中,我希望能够执行类似的操作

string publicKey = @"random characters" //don't want this in the code
byte[] keyBytes = [............] //this should be in the code
我不太确定如何获取公钥的文本,将其转换为字节数组,然后在客户端代码中使用该数组将其转换回公钥

我认为有一个简单的方法可以做到这一点,但我正在兜圈子,试图找出答案

基本上,我有一系列的文本数据,我希望能够保存为字节到平面文件。我可以将其作为字节数组来读取,但当我使用BinaryWriter将该字节数组写入文件时,最终得到的是原始文本


有人能帮忙吗?

就像每个文件一样,文本文件也是二进制文件

在这种情况下,每个二进制数都对应一个字符,所以当您在文本编辑器中打开文件时,您会看到可读的文本


必选。

就像每个文件一样,文本文件也是二进制文件

在这种情况下,每个二进制数都对应一个字符,所以当您在文本编辑器中打开文件时,您会看到可读的文本


必须。

您可以为此创建一个小型转换器

string publicKey = "AsdfsSDhysffsdfsdfZ09";
Console.Write("byte[] keyBytes = { ");
Console.Write(String.Join(", ", Array.ConvertAll(Encoding.ASCII.GetBytes(publicKey), b => String.Format("0x{0:X2}", b))));
Console.WriteLine("};");

运行它。然后将输出的最后一行复制到源代码中。

您可以为此创建一个小型转换器

string publicKey = "AsdfsSDhysffsdfsdfZ09";
Console.Write("byte[] keyBytes = { ");
Console.Write(String.Join(", ", Array.ConvertAll(Encoding.ASCII.GetBytes(publicKey), b => String.Format("0x{0:X2}", b))));
Console.WriteLine("};");


运行它。然后将输出的最后一行复制到源代码中。

这不是因为您用来打开文件的东西是以文本形式读入的,因为它只是文本吗?同意@codecaster-answer。您是在尝试加密或编码内容吗否则,这就是@codecasterMy bad实际描述的预期行为。我已经更新了这个问题,以解释我想要实现的目标。BinaryWriter不是它的名称所暗示的。这不是因为你用来打开文件的东西正在以文本形式读取它,因为它只是文本吗?同意@codecaster answer。你是在尝试加密或编码内容吗否则,这就是@codecasterMy bad实际描述的预期行为。我已经更新了这个问题来解释我想要实现的目标。BinaryWriter不是它的名字所暗示的。谢谢。我有点理解,但我的问题是暂时回避这个问题。我已经更新了我的问题,以澄清我的目标。所以你的问题是“如何安全地传输纯文本”?那么你的答案是“通过加密”。恕我直言,我不想就如何安全地传输纯文本提出建议。我知道,我理解。在本例中,我的具体问题是能够将文本转换为字节数组,并在代码中使用它。如果我们能专注于此,我将不胜感激。谢谢。这假定客户端上存在一个包含纯文本的文件。这正是我试图避免的。我希望文本的字节表示在代码中硬编码(然后分割和模糊处理等)。问题是如何在代码中硬编码字节表示。现在我得到了它。然后,您需要混淆程序集。请注意,如果有足够的持久性,这仍然可以让用户看到实际的字符串。谢谢。我有点理解,但我的问题是暂时回避这个问题。我已经更新了我的问题,以澄清我的目标。所以你的问题是“如何安全地传输纯文本”?那么你的答案是“通过加密”。恕我直言,我不想就如何安全地传输纯文本提出建议。我知道,我理解。在本例中,我的具体问题是能够将文本转换为字节数组,并在代码中使用它。如果我们能专注于此,我将不胜感激。谢谢。这假定客户端上存在一个包含纯文本的文件。这正是我试图避免的。我希望文本的字节表示在代码中硬编码(然后分割和模糊处理等)。问题是如何在代码中硬编码字节表示。现在我得到了它。然后,您需要混淆程序集。请注意,这仍然可以让人看到实际的字符串,如果他们足够持久的话。完美!我将ASCII改为UTF8,但这正是我想要的!另一种方法是使用base-64字符串:
stringobfuscatedkey=Convert.ToBase64String(Encoding.UTF8.GetBytes(publicKey));string back=Encoding.UTF8.GetString(Convert.FromBase64String(obfuscatedKey))。完美!我将ASCII改为UTF8,但这正是我想要的!另一种方法是使用base-64字符串:
stringobfuscatedkey=Convert.ToBase64String(Encoding.UTF8.GetBytes(publicKey));string back=Encoding.UTF8.GetString(Convert.FromBase64String(obfuscatedKey))