解説
換字式暗号は、文字ごとに別の文字を割り当てて置き換える暗号です。鍵の組み合わせは膨大ですが、弱点があります。言語ごとに「よく使われる文字」が決まっていることです。英語では E が最も多く現れます。
そこで暗号文の中で最も多い文字を数え、それが E に対応すると推測すれば、鍵を知らなくても解読の糸口がつかめます。
これが頻度分析の考え方で、暗号が統計的なパターンを残すと破られることを示しています。
書き方
辞書.get(キー, 0) — キーが無ければ既定値0を返す(出現回数の集計に使う)。 ・文字列.isalpha(): 英字かを判定。 ・sorted(辞書.items(), key=lambda x: -x[1]): 出現回数の多い順に並べ替え。 ・ranking[:5]: 上位5件のスライス。
書いて動かす
この回の課題
暗号文の英字ごとの出現回数を数えて多い順に並べ、最頻文字がEに対応すると推測してみよう。
コードはあなたの端末の中だけで動きます(サーバーには送られません)。進み具合もこのブラウザに保存されます。
もっと本格的に使うなら
Windows版 InsightPy なら、書いたコードを保存して業務の自動化まで進められます。学習センターはずっと無料です。