1

このコードは、正しい暗号化キーで 1 回実行するたびに正しい答えを返しますが、2 回実行するとまったく異なる結果が得られます。

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 で 2 回実行すると、1234 で完全に間違った答えが返されます。

キーはローカル変数です (問題は発生しません) CR はカスタム クラス タイプであり、新しいオブジェクトに対して new で参照します (問題は発生しません) 表示前に毎回 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 に答える