演習2-1 省略 なければ各自追記せよ
演習2-2(ヴィジュネル暗号)
平文 :THERE ARE TREE PENCILS IN THE PENCIL CASE.
暗号文: FVVTS RCW ICTS DG}TWAH W_ EYG AV}U{Z ROGG.
暗号鍵: PORCO ROS SOPO RCOROSS OP ORC OROSSO PORC.
このような暗号をヴィジュネル暗号という。
この問題では、ヴィジュネル表を参照することで暗号鍵を求める。
横軸を平文、縦軸を暗号鍵とすると、交差するマスは暗号文となる。
このため、横軸と交差するマスを指定することで、縦軸の位置が決まる。
この位置より、暗号鍵を求められる。
この操作を繰り返すと「PORCOROSSO」(ポルコロッソ)という文字列を求めることができる。
演習2-3(バーナム暗号)
平文 (HEX): 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37
暗号文(HEX): 0x77 0x44 0x57 0x40 0x47 0x7E 0x53 0x4E
暗号鍵(HEX): 0x47 0x75 0x65 0x73 0x73 0x4B 0x65 0x79
暗号鍵(HEX): 0x47 0x75 0x65 0x73 0x73 0x4B 0x65 0x79
暗号文(HEX): 0x13 0x1D 0x00 0x36 0x1D 0x2F 0x0A 0x1F
0x14 0x10 0x08 0x1A 0x1D 0x2A 0x17
解読文(HEX): 0x54 0x68 0x65 0x45 0x6E 0x64 0x6F 0x66
0x53 0x65 0x6D 0x69 0x6E 0x61 0x72
ASCIIコード: The End of Seminar (セミナーの終了)
加工する
5468 6545 6E64 6F66 5365 6D69 6E61 72
……だから何?なので放置。
このような暗号をバーナム暗号という。
バーナム暗号はXORを活用した換字である。原理としては、平文と同じ長さのランダムな内容の鍵を用いて、1ビットごとにXOR演算を行い暗号化するというものだ。
これを複合するには、暗号文と暗号化に用いた鍵の2つを1ビットごとにXOR演算する必要がある。
また平文と暗号文があれば、互いをXOR演算することで、暗号化に用いた鍵を導出することができる。
この特徴を用いて本課題では、まず暗号鍵を求め、その鍵を転用することで別の暗号文を解読する。
まず、平文と暗号文を1ビットずつXOR演算し、暗号鍵を導出する。
次に導出した暗号鍵を転用し、別の暗号文を解読する。この際、暗号鍵は暗号文よりも短い。このため、そのままでは途中までしか解読することができない。そこで、暗号鍵の終端まで到達した際、次の文字を暗号鍵の始端とし、鍵をループすることで本問題を解決することができる。
解読文は、16進数の羅列である。これをASCIIコード表を用いて置換すると、「TheEndofSeminar」という文字列を手に入れることができる。
