Hallo,
Also ich dachte mir, dass es nur dann nicht rückgängig gemacht werden kann, wenn es mehrere Ursprünge hinter einem Code gibt, denn dann könnte kein eindeutiges Ergebnis geliefert werden.
Jain.Wenn Du eine normale mathematische Verknüpfung hast, dann kann diese im Normalfall rückgängig gemacht werden. Wenn diese Verknüfpung dann z.B. lautet "die Zahl hoch zwei", dann weißt Du, dass Du die Quadratwurzel zeihen musst. Dies ist bei sehr vielen mathematischen Verknüpfungen der Fall.
Nun stelle Dir jedoch vor, dass Du die Verknüpfung nicht über den normalen unendlichen Zahlenraum durchführst, sondern über einen endlichen Zahlenraum einer Uhr. Stelle Dir also vor, Du hättest eine normale analoge Uhr vor Dir, bei der die 12 durch 0 ausgetauscht wäre. Wenn Du nun 4+5 rechnest, dann ist es ganz klar, dass Du bei 9 rauskommst. Du gehst von der 0 aus 4 Schritte im Uhrzeigersinn und dann 5 Schritte weiter. Dann kommst Du bei der 9 raus. Wenn Du dagegen 9 + 6 rechnest, kommt 3 heraus. Dies sollte klar sein, Du gehst von der 9 aus 6 Schritte im Uhrzeigersinn. Dann kommst Du bei der 3 an. Du bekommst die 3 rechnerisch heraus, indem Du (9 + 6) mod 12 rechnest.
Wenn Du nun eine Verknüpfung wie 23^x hast, dann dürfte in einem Uhrensystem mit Ziffern von 0 bis 16 es ziemlich schwierig sein, das ganze wieder umzukehren. Bei bei der Zahl 7 wäre das Ergebins (23^7) mod 17 = 14. Wenn Du nun den Wert 14 hast, dann kannst Du keine 7. Wurzel daraus ziehen, um auf den ursprünglichen zurückzukommen. Die einzige Möglichkeit wäre durchprobieren:
(23^1) mod 17 = 6
(23^2) mod 17 = 2
(23^3) mod 17 = 12
(23^4) mod 17 = 4
(23^5) mod 17 = 7
(23^6) mod 17 = 8
(23^7) mod 17 = 14
Aha, wir haben ihn also gefunden. Aber: Der Wertebereich, den wir hier gewählt haben, war sehr klein. Nur 17 verschiedene Möglichkeiten für ein Ergebnis. Ein MD5-Hash ist 16 Bytes = 128 Bit lang. Damit stehen 340.282.366.920.938.463.463.374.607.431.768.211.456 verschiedene Möglichkeiten für eine MD5-Zeichenkette zur Verfügung. Daher dürfte das durchprobieren sichtlich schwer fallen.
Ich sollte vielleicht noch erwähnen, dass ich keine Ahnung habe, wie der MD5-Algorithmus genau funktioniert. Ich weiß nur, dass es eine nichtumkehrbare Funktion ist. Die Uhrenarithmetik hier war nur ein Beispiel für das mögliche Funktionieren einer solchen Funktion. Es gibt vermutlich noch andere Wege, nichtumkehrbare Funktionen zu erstellen.
Das würde auch erklären, wie ein langer Text sowie ein kurzer problemlos in einen einheitlich langen Code passen, so kommt es zu garantierten dopplungen.
Es gibt bei MD5 auch Doppelungen, das kann man mathematisch Nachweisen. Allerdings ist bisher noch kein einziger Mensch auf eine gestoßen.
Außerdem erklärte ich mir selber, dass lange Eingaben gekürzt und kurze Eingaben verlängert werden, sodass es wieder zu einer korrekten Codierung in die einheitliche Länge kommt.
Nein. Ich weiß zwar nicht, wie der Algorithmus genau funktioniert, aber eines weiß ich: Wenn Du in einer 2GB großen Datei ein einziges Bit an welcher Stelle auch immer veränderst, ändert sich auch der entsprechende MD5-Wert.
Google brachte mir nur ein technisches Wirrwarr, welches ich absolut nicht verstand...
Ich hoffe, meine Erklärung ist verständlicher.
Viele Grüße,
Christian