Die Vigenère-Chiffre war eine einfache polyalphabetische Chiffre, bei der im Grunde genommen einer von mehreren Cäsar-Chiffren gemäß einem Schlüssel angewendet wurde. Grundsätzlich geben die Buchstaben in der Taste an, welches verschobene Alphabet verwendet werden soll. Zu diesem Zweck gab es ein einfaches Werkzeug namens Vigenère-Platz:
Hier ist jede Zeile ein separates Alphabet, beginnend mit dem entsprechenden Buchstaben der Taste. Die Spalten werden dann verwendet, um den verschlüsselten Buchstaben zu bestimmen. Die Entschlüsselung funktioniert sehr ähnlich, nur umgekehrt.
Angenommen, wir möchten die Zeichenfolge verschlüsseln CODEGOLF
. Wir brauchen auch einen Schlüssel. In diesem Fall ist der Schlüssel FOOBAR
. Wenn der Schlüssel kürzer als der Klartext ist, erweitern wir ihn durch Wiederholung, daher ist der tatsächliche Schlüssel, den wir verwenden, der FOOBARFO
. Wir schlagen nun den ersten Buchstaben der Taste F
nach, um das Alphabet zu finden. Es beginnt, vielleicht nicht überraschend, mit F
. Nun finden wir die Spalte mit dem ersten Buchstaben des Klartextes und dem resultierenden Buchstaben ist H
. Für den zweiten Buchstaben haben wir O
als Schlüssel den Buchstaben und als Klartext den Buchstaben, woraus sich ergibt C
. Wenn wir so weitermachen, haben wir es endlich geschafft HCRFGFQT
.
Aufgabe
Ihre Aufgabe ist es nun, Nachrichten mit einem Schlüssel zu entschlüsseln. Da wir jedoch aus dem 16. Jahrhundert herausgewachsen sind und Computer haben, sollten wir zumindest ein etwas größeres Alphabet unterstützen:
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
Der Bau des Vigenère-Platzes ist immer noch sehr ähnlich und die Chiffre funktioniert immer noch auf die gleiche Weise. Es ist nur ein bisschen ... unhandlich, hier in vollem Umfang zu geben.
Eingang
Die Eingabe erfolgt in der Standardeingabe als zwei separate Textzeilen, die jeweils durch einen Zeilenumbruch abgeschlossen werden. Die erste Zeile enthält den Schlüssel, während die zweite den Chiffretext enthält.
Ausgabe
Eine einzelne Zeile, die die entschlüsselte Nachricht enthält.
Gewinnbedingung
Da die Verschlüsselung manchmal als Waffe angesehen wird, sollte der Code kurz sein, um das Schmuggeln zu erleichtern. Je kürzer desto besser, da die Wahrscheinlichkeit einer Entdeckung verringert wird.
Probeneingabe 1
Key
miQ2eEO
Beispielausgabe 1
Message
Probeneingabe 2
ThisIsAKey
CoqKuGRUw29BiDTQmOpJFpBzlMMLiPb8alGruFbu
Beispielausgabe 2
ThisWorksEquallyWellWithNumbers123894576
Eine Woche ist vergangen. Die aktuell kürzeste Lösung wurde angenommen. Für die Interessenten hatten wir bei unserem Wettbewerb folgende Einreichungen und Längen:
130 - Python
146 - Haskell
195 - C
197 - C
267 - VB.NET
Und unsere eigenen Lösungen, die nicht mit den anderen verglichen wurden:
108 - Ruby
139 - PowerShell