39476e43fa1cf7b44c5c373b22166e22
zum Cache
Wir könnten ja eine irrwitzige Geschichte zum Cache erfinden um die ganze Angelegenheit noch etwas erschwert zu verpacken, aber wir sind zum Entschluss gekommen, es einmal anders herum zu machen. Wir sagen genau, wie die Aufgabe zu lösen ist und geneigte Cacher können sich ganz auf die Ausführung konzentrieren.
zur Aufgabe
"Message-Digest Algorithm 5" ist eine kryptographische Hashfunktion, die aus einer beliebigen Nachricht einen 128-Bit-Hashwert (deutsch: Prüfsumme) erzeugt. Von der Zielkoordinate liegt nur folgender 32-stelliger MD5-Hash vor:
39476e43fa1cf7b44c5c373b22166e22
Die Aufgabe besteht nun darin, den zum MD5-Hash passenden Originaltext zu finden. Da dieses nun ohne jegliche Vorgaben ein "etwas" umfangreicheres Unterfangen wäre, wollen wir hier noch die Form des "verhashten" Textes vorgeben und die variablen, gesuchten Zeichen (X) auf acht begrenzen.
N51° 2X.XXX' E006° 2X.XXX'
Es handelt sich um eine geographische Koordinate (Grad, Minuten, Dezimalminuten) bestehend aus 26 Zeichen inklusive Grad-, Minuten- und Leerzeichen. Der Text sollte UTF-8 kodiert sein. Die Notation muss exakt eingehalten werden, da jedes veränderte Zeichen einen völlig anderen Hashcode zur Folge hätte.
zum Beispiel
Zum Vergleich hier nun einige Textbeispiele (ohne Anführungszeichen) mit den entsprechenden Hashes:
0cbc6611f5540bd0809a388dc95a615b = MD5-Hash von "Test"
7215ee9c7d9dc229d2921a40e899ec5f = MD5-Hash von " " (Leerzeichen)
4723eb5aa8b0cd28c7e09433839b8fae = MD5-Hash von "°"
3590cb8af0bbb9e78c343b52b93773c9 = MD5-Hash von "'"
25d55ad283aa400af464c76d713c07ad = MD5-Hash von "12345678"
bf1538d46b7a14324071507d3f4fd7bc = MD5-Hash von "N00° 00.000' E000° 00.000'"
zu unserer Lösung
Wir haben uns für die klassische Brute-Force-Methode und Java entschieden. Auf einem handelsüblichen PC benötigte die Anwendung unter "Oracle JDeveloper 11g" genau 174 Sekunden um das Ergebnis zu finden. Eine weitere, objektorientiertere Lösung schaffte es später in 147 Sekunden. Der Fünfzeiler in Perl brauchte vier Sekunden. Es geht aber bestimmt auch noch schneller, wir freuen uns auf eure Lösungen.
zur Entstehungsgeschichte
Die Idee zum Cache fanden wir in Dresden bei "GC138K5 - Hashcache", den wir vor Ort auf Grund fehlender Infrastruktur nicht mehr lösen konnten. So haben wir im Anschluss an unsere Reise die Gelegenheit genutzt, unsere JAVA-Kenntnisse wieder etwas aufzufrischen. Dabei konnten wir auf die freundliche und überaus professionelle Hilfe von Java-Großmeister Alcazzar zurückgreifen.
zur Dose
Da wir davon ausgehen, dass die Dose nicht zu den stark frequentierten der Umgebung gehören wird, haben wir hier einmal einen Micro zum Einsatz gebracht.
zur Bildung
Wir lernen ja alle nie aus und wie in der IT-Branche üblich gibt es für ein und die selbe Lösung verschiedenste Wege dorthin. Deshalb würden wir uns sehr freuen, wenn ihr über euren Lösungsweg und dessen Performance berichtet. Wenn ihr möchtet, sendet uns doch bitte eure Lösung zu.