つけじょにーのすぱげていコード

主に、競技プログラミング、セキュリティのお勉強の際に書いたすぱげていコードを書き込みます

エニグマ

エニグマはドイツで開発された暗号化及び複合化を行う機械のことをいう
機械含め、暗号化及び複合化に用いられるものは以下のとおり

国防軍鍵表(日替わり鍵)
エニグマ(電源、キー、プラグボード、ローター1、ローター2、ローター3、反射器、ランプ)

まず、国防軍鍵表というのは、日替わり鍵が記載された表のことで、日毎に鍵が変更される。この鍵が適宜変更されるというのは、他の暗号化アルゴリズムでも用いられたりするほど効果がある

次にエニグマについて、キーというのは入力である。この入力がプラグボード、ローター123をとおり反射器で跳ね返ってランプが点灯するといった仕組み
例えば、キーはアルファベットの一覧であることが考えられ、平文をそこに打ち込む。
文字1つ1つについて、日替わり鍵によって設定されたプラグボードを通り、ローターを通っていく(ローターはキーを打つごとに回るんだけど、ローター1が回転するとローター2は1/4回転して、ローター2が回転するとローター3も1/4回転するといった連鎖的な仕組みになっている)反射器で跳ね返り、戻ってきた結果はランプに出力される。

手順:
①日替わり鍵によってプラグボードやローターの設定をする
②アルファベット3文字を決めて、それを連続させた計6文字(=通信鍵)を暗号化(昔は通信がうまくいかないことがよくあったらしくて、損失しても大丈夫なようにこうしてるみたい)。
③通信鍵によってプラグボードやローターを再設定
④平文の暗号化
⑤通信鍵+暗号文を送る

当然、受け取り側はこれの逆をするわけです

当時、エニグマは多くの解読者によって解読対象となっていたのですが、なかなかとけませんでした 
ですが、レイェフスキという人が解読して、世に広めました。その後、かの有名なアラン・チューリングエニグマ解読器を作りました

隠すことによるセキュリティがまずかったんですね 
また、他ならぬ人が鍵を決めていたのもマズかったんでしょう