Einen schönen Tag,
ein Kumpel hat mir folgende Aufgabe gestellt, und ich habe noch keine Lösung dafür. Es handelt sich um sportliche Kryptographie (
), vielleicht hat eine(r) von Euch eine Inspiration für mich...
Er hat sich folgendes ausgedacht:
1. Zunächst bilden wir Buchstaben auf Zahlen ab, z.B. mithilfe der alten
ASCII-Tabelle (Buchstaben, Zahlen und ein paar Sonderzeichen reichen aus). Wir erhalten also Zahlen zwischen 0 und 127 pro Zeichen.
2. Dann bauen wir die Nachricht zusammen.
ABBA würde also zu einem Array derart werden:
(65, 66, 66, 65).
3. Wir erzeugen ein Nullen-Array beliebiger Länge
R = (0, 0, 0, 0, 0, 0, 0, 0, 0).
3.1 Wir wählen eine beliebige Position innerhalb des Arrays und addieren den
ASCII-Wert der Buchstaben unserer Nachricht auf die Werte der korrespondierenden Stellen in R.
Beispiel:
Wir wählen die Stelle 1 und addieren
ABBA auf R:
Code:
(0, 0, 0, 0, 0, 0, 0, 0, 0) + // Leeres Array
(65,66,66,65) = // Stelle 1
(65,66,66,65, 0, 0, 0, 0, 0) // Zwischenergebnis
3.2 Wir machen das ein paar mal.... (wie oft genau ist beliebig)
Beispiel (wir wählen die Stelle 3 und dann noch die Stelle 6 und addieren jeweils
ABBA drauf (auch gern mehrmals auf die selbe Position)):
Code:
(65,66,66, 65, 0, 0, 0, 0, 0) + // Zwischenergebnis von eben
(0, 0, 65, 66, 66,65) + // Stelle 3
(0, 0, 0, 0, 0, 65,66,66,65) = // Stelle 6
(65,66,131,131,66,130,66,66,65) // Endergebnis
Das Endergebnis
(65,66,131,131,66,130,66,66,65) wird dann übermittelt.
Die Aufgabe besteht darin, den Klartext
ABBA wiederherzustellen.
Der Klartext braucht nicht natürlichsprachig zu sein, sondern z.B. eine Base64-Kodierung einer Datendatei.
Die Länge des Klartextes sei bekannt (öffentlich, kein Geheimnis). (In diesem Beispiel ('ABBA') ist sie gleich 4)
Dennoch finde ich keine Herangehensweise an die Lösung. Insbesondere Durchprobieren erscheint sehr komplex, wenn die Klartextlänge groß wird (--> 500 Zeichen o.ä.)
Hat jemand ne Idee?
Es gibt auch ein Eis als Belohnung (... für einen zuverlässigen Algorithmus)
Schöne Grüße
Caps