1

キーの長さはわかっているが、それが何であるかがわからない場合、Vigenere Cipher について理解するのに苦労しています。キーがわかればテキストを解読できますが、キーが実際に何であるかを理解する方法について混乱しています。

一例として、私は暗号文と 6 の長さの鍵を与えられました。与えられたのはそれだけです。鍵は任意の文字のセットであり、必ずしも英語の単語を構成する必要はないと言われました。 、言い換えれば、文字のランダムなセット。

この知識に基づいて、暗号文を 6 つのサブテキストに分割しただけで、それぞれがキー文字によって暗号化された文字を含むため、最初のサブテキストには最初の文字から 6 文字ごとに含まれます。2 番目の文字から始まる 6 番目の文字ごとに 2 番目の文字など。

私は今何をしますか?

4

2 に答える 2

1

キーの文字ごとに文字頻度表を計算します。あなたの例のように、キーの長さが 6 の場合、6 つの頻度テーブルが得られます。同じ文字ではありませんが、同様の頻度が得られるはずです。そうでない場合は、キーの長さが間違っています。

次に、英語の文字頻度表を確認します (たとえば、http://en.wikipedia.org/wiki/Letter_frequencyを参照してください)。パターンが一致しない場合、平文は英語ではありませんでした。そうであれば、各サブテキストで最も頻繁に使用される文字を頻度表などで最も頻繁に使用される文字に割り当てて、何が得られるかを確認します。テキストの頻度がわずかに異なる場合があることに注意してください。参照テーブルは大量のデータに基づく統計です。今、あなたは頭を使う必要があります。

一般的なダイグラム (英語の th や sh など) を使用すると役立ちます。

于 2013-10-20T19:30:41.277 に答える
-2

1 つのアプローチは周波数分析です。6 つのグループのそれぞれを取り上げて、各文字の頻度表を作成します。次に、その表を平文の既知の頻度の表と比較します (標準テキストの場合、これは単に英語になります)。

2 番目の、おそらくより単純なアプローチは、各キャラクターを力ずくで攻撃することです。可能な鍵の数は 26^6 ~= 300,000,000 で、これは鍵空間の約 29 ビットです。これは力ずくで実行できますが、パソコンではおそらく少し時間がかかります。しかし、一度に 1 文字ずつブルート フォースした場合、試行回数は 26*6 = 156 回しかかかりません。そのためには、試行された復号化された平文を「平文に似た」外観で「スコア付け」する関数を作成します。上記のような周波数分析を行うこともできますが、もっと簡単なテストもあるでしょう。次に、6 つの文字セットのそれぞれを総当たり攻撃し、それらのそれぞれを復号化するためのスコアが最も高いキー文字を選択します。

于 2013-10-20T21:05:44.650 に答える