読者です 読者をやめる 読者になる 読者になる

ビジネル暗号を解こう

ショートコーディング

ベネディクトカンバーバッジ主演の「イミテーションゲーム」という映画を見ました。ベネディクトカンバーバッジって言うの気持ちよくないですか?映画の内容はアラン・チューリングという数学者の人がエニグマという暗号機で作られた暗号を解読するというものです。エニグマ第二次世界大戦の時にナチス・ドイツが使っていた暗号機だそうです。その映画に影響されて、少し暗号を勉強したいと思います。

そこで、ビジネル暗号で暗号化された暗号文をもとの暗号化される前の文字に戻したいと思います。ビジネル暗号というのは、短いキーワードを繰り返して、鍵の文字列を作ります。鍵の文字の長さと平文の長さを同じにします。アルファベットの文字をAは1,Bは2...Zは26というふうに数字と対応付けます。鍵の文字の番号と平文の番号を足して、それを27で割ったあまりの番号の文字を暗号文字とします。キーワードとしてABCを使ったら次のように暗号化されます。

鍵 :           ABCABCABCABCAB
平文 :       ATTACK AT DAWN
暗号文:    BVWBENACWAFDXP

どうやって暗号化するのかがわかったところで、暗号文「DOBHBUAASXFZWJQQ」を解読するプログラムを書きたいと思います。

平文の文字 = (暗号文字 - 鍵の文字) mod 27

上の式でもとの文字に戻せるようです。(modは割った余りという意味で、この場合、27で割った余りです。)wikipediaの情報です。さて、どんな文に変換されるでしょう。もし興味があれば、平文にしてみてください。