#64

換字式暗号と頻度分析

文字の出現回数を数えることで暗号が推測できることを学びます。

解説

換字式暗号は、文字ごとに別の文字を割り当てて置き換える暗号です。鍵の組み合わせは膨大ですが、弱点があります。言語ごとに「よく使われる文字」が決まっていることです。英語では E が最も多く現れます。 そこで暗号文の中で最も多い文字を数え、それが E に対応すると推測すれば、鍵を知らなくても解読の糸口がつかめます。 これが頻度分析の考え方で、暗号が統計的なパターンを残すと破られることを示しています。

書き方

辞書.get(キー, 0) — キーが無ければ既定値0を返す(出現回数の集計に使う)。
・文字列.isalpha(): 英字かを判定。
・sorted(辞書.items(), key=lambda x: -x[1]): 出現回数の多い順に並べ替え。
・ranking[:5]: 上位5件のスライス。

書いて動かす

この回の課題

暗号文の英字ごとの出現回数を数えて多い順に並べ、最頻文字がEに対応すると推測してみよう。

コードはあなたの端末の中だけで動きます(サーバーには送られません)。進み具合もこのブラウザに保存されます。

もっと本格的に使うなら

Windows版 InsightPy なら、書いたコードを保存して業務の自動化まで進められます。学習センターはずっと無料です。