WPF アプリ用に C# で RC4 アルゴリズムを実装しています。
私はアルゴリズムを述べているこのpdfに従いました。
問題は、KSA で私たちがすべきことですj = (j + S[i] + (int)key[i % keyLengthInBits]) % 256;
。
そうは言っても、キーは 5 文字から 32 文字の長さ (40 ビットから 256 ビットまで) である必要があるため、これがどのように機能するのかわかりません。
それでは、5 文字のキーを使用した例を見てみましょう (上記でリンクした pdf と同じものを使用します): pwd12。その位置でキーの文字を取得しますi % 40
(5 文字の長さは 40 ビットです)。最初の 5 回までは問題ありません。キー ( pwd12 )に値があるi = 0
からです。ここに問題がありますが (私がどう見ても) : にいるとき、キーに文字が残っていません。したがって、 を取得します。i=4
i=5
ÒutOfBounds Exception
何もないキーで文字をフェッチしようとすると、どのように動作する可能性がありますか? 明らかに、アルゴリズムには表示されないものがあります。それは機能するためです。そうしないと使用されません...