运行两次以上时出现意外结果

时间:2013-09-19 19:32:08

标签: c# algorithm encryption password-encryption

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

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 [],在应用程序的任何地方都不会被修改

任何想法?谢谢,度过了美好的一天

1 个答案:

答案 0 :(得分: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.