0

我正在使用 C# 中的一个大字符串。例如,我的字符串长度是 2.000.000 个字符。我必须加密这个字符串。我必须将其保存为硬盘上的文本文件。我尝试使用 XOR 进行最快和基本的文本加密,但加密时间仍然太长。使用 2.13 GHz 双核 CPU 和 3 GB RAM 需要 1 小时。此外,保存文件(使用 StreamWriter Write 方法)和读取文件(使用 StreamReader ReadToEnd 方法)花费的时间太长。

编码:

public static string XorText(string text) 
{   
   string newText = ""; 
   int key = 1; 
   int charValue; 
   for (int i = 0; i < text.Length; i++) 
   {
     charValue = Convert.ToInt32(text[i]); //get the ASCII value of the character 
     charValue ^= key; //xor the value 
     newText += char.ConvertFromUtf32(charValue); //convert back to string 
   } 
   return newText; 
}

您对这些操作有何建议?

4

1 回答 1

4

我建议StringBuilder对大字符串使用而不是字符串,也最好显示您的代码以查看是否可以进行任何其他优化。例如,对于读取/写入文件,您可以使用缓冲区。

更新:正如我在您的代码中看到的最大问题(使用此代码)在这一行:

newText += char.ConvertFromUtf32(charValue);

String不可变的对象,并且+=操作员每次都会创建一个新实例,newText并且当长度很大时,这会导致时间和内存问题,因此,string如果您使用StringBuilder这行代码而不是这样:

newText.Append(char.ConvertFromUtf32(charValue));

并且此功能将运行得非常快。

于 2012-05-17T09:17:43.687 回答