[QUIZ#11] Codeknacker

Besteht die erste Aufgabe darin, das zu entschlüsseln und mit dem Programm alle Lösungen anzubieten, oder soll das Programm die richtige Lösung automatisch finden?

Wenn es nur das erstere wäre, wäre das zu einfach, ich habe die zweite Variante genommen und eigentlich funktioniert das ganz gut.
 
Zuletzt bearbeitet:
Jetzt müßte ich nur noch wissen wie man ein Gleichungssystem löst, in dem Modulo vorkommt.

„Im Prinzip“ so wie man auch eines ohne Modulo lösen würde: eine Gleichung nach einer Variable auflösen, den so gewonnenen Ausdruck für die Variable in die nächste Gleichung einsetzen etc. Mal ein völlig aus der Luft gegriffenes ;) Beispiel:
Code:
a * x1 + b = y1  mod m  (I)
a * x2 + b = y2  mod m  (II)

(I) nach b auflösen:
b = y1 - a * x1  mod m  (*)

(*) in (II) einsetzen:
a * x2 + y1 - a * x1 = y2  mod m  (**)

(**) versuchen nach a aufzulösen:
a * (x2 - x1) = y2 - y1  mod m  (***)
Hier stößt man möglicherweise auf ein Problem: man möchte jetzt gern das Inverse von (x2 - x1) von rechts an die Gleichung multiplizieren. Es kann allerdings vorkommen, dass (x2 - x1) überhaupt nicht invertierbar ist. Dann muss man noch etwas mehr Energie reinstecken, um auf das Ergebnis zu kommen. Das kann man sich aber sparen, wenn man x1 und x2 im Rahmen der Möglichkeiten so wählt, dass die Differenz invertierbar ist. Hoffe das hilft etwas weiter, ohne zu viel zu verraten.

Grüße, Matthias
 
Danke Matthias. Gedacht hab ich also richtig. Die Formel war im Prinzip auch richtig nur die eine Variable und meine UnsignedInt<-->Byte Array Konvertierungen nicht so recht. Aber nun klappts. Tolle Sache.... ich kann ja auch nicht davon lassen bis es geht :)
 
€dit:
Vergesst es wieder, ich habe den Datentyp "unsigned long long" vergessen. Damit geht es ohne Probleme :rolleyes:
 
Zuletzt bearbeitet:
Zurück