ヴィジュネル暗号は、鍵によれば、基本的にいくつかのシーザー暗号のいずれかを適用単純polyalphabetic暗号ました。基本的に、キー内の文字は、どのシフトアルファベットを使用するかを示します。そのために、Vigenèreスクエアと呼ばれるシンプルなツールがありました。
ここで、各行は、キーの対応する文字で始まる個別のアルファベットです。列は、暗号化された文字を決定するために使用されます。復号化はほぼ同じ方法で機能しますが、逆も同様です。
文字列を暗号化するとしますCODEGOLF
。キーも必要です。この場合、キーはであるものとしますFOOBAR
。キーがプレーンテキストより短い場合、繰り返してキーを拡張するため、実際に使用するキーはですFOOBARFO
。キーの最初の文字F
を検索します。これはアルファベットを見つけるためのものです。おそらく驚くことではありませんが、で始まりF
ます。これで、プレーンテキストの最初の文字が含まれる列が見つかり、結果の文字はH
です。2番目の文字にはO
、キー文字とプレーンテキスト文字があり、結果はになりC
ます。そのように続けると、ようやく手に入りHCRFGFQT
ます。
仕事
ここでのタスクは、キーを指定してメッセージを解読することです。ただし、16世紀を超えてコンピューターを所有しているため、少なくとも少し大きいアルファベットをサポートする必要があります。
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
Vigenère広場の構造はまだ非常に同じであり、暗号はまだ同じように機能します。少しだけ...ここで完全に説明するのは扱いにくいです。
入力
入力は、それぞれが改行で終わる2行のテキストとして標準入力に与えられます。最初の行にはキーが含まれ、2番目の行には暗号文が含まれます。
出力
解読されたメッセージを含む単一行。
勝利条件
暗号化は武器と見なされることもあるため、密輸を容易にするためにコードは短くする必要があります。発見の可能性を減らすため、短いほど良い。
サンプル入力1
Key
miQ2eEO
サンプル出力1
Message
サンプル入力2
ThisIsAKey
CoqKuGRUw29BiDTQmOpJFpBzlMMLiPb8alGruFbu
サンプル出力2
ThisWorksEquallyWellWithNumbers123894576
1週間が経過しました。現在最短の解決策が受け入れられています。興味のある方のために、私たちのコンテストでは、以下の提出物と長さがありました。
130 – Python
146 – Haskell
195 – C
197 – C
267 – VB.NET
そして、他とはランク付けされなかった独自のソリューション:
108 – Ruby
139 – PowerShell