シーザー/ヴィジュネル暗号を頻度で破る

文字頻度ヒストグラムが自然な英語頻度に重なる所で平文が浮かぶ。鍵をずらすと即再計算 c = (p + k) mod 26

暗号方式
真鍵 7
シフト 0
鍵長 3
列 0
適合度 χ²(小さいほど英語的)
この列の正解シフト
一致指数 IC
判定
シフト円盤(外=平文 内=暗号)— 内輪をドラッグで回転
カシスキー:繰り返し間隔の約数
文字頻度ヒストグラム(棒=暗号 線=英語の自然頻度)
暗号文(解析対象)
復号結果(鍵が合うほど英語が読める)
シーザー暗号は全文字を同じ数 k だけずらすだけ(c = (p + k) mod 26)。 ずらしても文字の出現頻度の「形」は変わらず横に回るだけなので、 暗号文の頻度ヒストグラムが英語の自然頻度(E が最頻 …)にピタリ重なるシフトを探せば鍵がわかります
ヴィジュネル暗号は鍵を複数文字にして列ごとに違うシフトを使うため一見壊れにくいですが、 カシスキー法で繰り返しの間隔から鍵長を見抜き、同じ列の文字だけ集めれば それぞれが単なるシーザー暗号に戻り、列ごとに頻度で破れます。
剰余演算は BigInt で正確に計算しています。スライダーを動かすと χ²(英語頻度とのズレ)が即再計算されます。

いま何が起きている?

ここがポイント