1

每当我在正确的加密密钥上运行一次时,这段代码确实会返回正确的答案,但是如果我运行它两次,它会给出完全不同的结果

int key = Int32.Parse(MinKeyTB.Text, System.Globalization.NumberStyles.HexNumber);
CR = new Crypto(key);
textBox3.Text = string.Empty;
foreach (string temp in (ASCIIEncoding.ASCII.GetString(CR.Decrypt(ToBurtal))).Split('\n'))
{
    textBox3.Text += temp + Environment.NewLine;
}
key++;
MinKeyTB.Text = (key).ToString("X");

最小键文本框是我输入要使用的键的地方,正确的键是 1234,它工作正常,但如果我用 1233 运行它两次,然后 1234 它给出一个完全错误的答案

键是局部变量(不应该引起问题) CR 是自定义类类型,我用新对象引用它(不应该引起问题)我每次在显示之前清理 textbox3(不应该引起问题) ToBurtal 是全局的byte[] 不会在应用程序的任何地方被修改

任何想法 ?谢谢,祝你有美好的一天

4

1 回答 1

0

我的猜测是ToBurtal在函数内部进行了修改Decrypt。尝试使用数组的本地副本,看看是否能解决您的问题:

byte[] ToBurtalTemp = new byte[ToBurtal.Length];
Array.Copy(ToBurtal, ToBurtalTemp, ToBurtal.Length);

foreach (string temp in (ASCIIEncoding.ASCII.GetString(CR.Decrypt(ToBurtalTemp))).Split('\n'))
// etc.
于 2013-09-19T19:41:55.077 回答