![]() |
MD5 Hash "zurückrechnen"
Hallo Liebe Delphi Gemeinde,
Ich habe mir für heute vorgenommen ein kleines Programm zu schreiben, das einen MD5 Hash "zurückrechnet". Ich hab' via Suchfunktion schon einige Threads gefunden, in denen Fragen zu diesem Thema gestellt wurden, allerdings habe ich noch nicht alles zusammen, was ich brauche. Das Programm soll (rekursiv) jede mögliche Zeichenkombination in einen Hash umrechnen und ihn dann mit dem vorgegebenen vergleichen. Bei Übereinstimmung erfolgt dann die Ausgabe. Abbruchbedingung ist die Länge der Zeichenfolge. Allerdings habe ich leider wenig Ahnung von Assambler und Co, weswegen ich keinen wirklich effizienten Umrechnungsalgo schreiben kann. Kann mir jemand einen besonders schnellen Algo empfehlen (Code-Library?)? Vielen Dank schonmal im Voraus! lg, everdream P.s: Ich werde mich wohl vorerst aus "A"-"Z", "a"-"z" und "0"-"9" beschränken. |
Re: MD5 Hash "zurückrechnen"
Zwei Worte: UN MÖGLICH (hi Phoe ;) )
Was du vorhast, wird sehr sehr langsam und in den seltensten Fällen funktionieren. Allerdings wirst du auch mit Assembler deinen gewünschten Algorithmus nicht besonders beschleunigen können. In der Codelib gibt es zwar eine optimierte Methode, ![]() ![]() |
Re: MD5 Hash "zurückrechnen"
Das Wesens eines Hashalgorithmuses ist ja gerade, daß er bicht umkehrbar ist.
|
Re: MD5 Hash "zurückrechnen"
Okay, soweit hatte ich nicht gerechnet.
Dann würde ich vielleicht mal einen Gedanken weiterverfolgen, den ich zu Anfang hatte: Ein Programm schreiben, das Hashs berechnet und archiviert (alphabetisch sortiert, jeweils mit dem string dahinter, aus dem es erzeugt wurde). Das müsste dann erst einige zeit laufen, und ich müsste mal eine meiner Partitionen für die Datenbank frei machen, aber wenn ich genug Zeit und Speicherplatz habe, bereitstelle, dann müsste es mir doch möglich sein auch Hashs mit 6 oder mehr Stellen zu identifizieren. Zugegebenermaßen sehr umständlich, vor allem, weil meine Kenntnisse zum Speichern von Daten grade bis zur textdatei reichen -.- |
Re: MD5 Hash "zurückrechnen"
Du wist aber schon das Hashfunktionen nicht eineindeutig sind?
|
Re: MD5 Hash "zurückrechnen"
Ja, aber wenn bei den wenigen Zeichen wirklich mal ein Hash auf mehrere Zeichenfolgen zutrifft, dann kann man ja aus denen auswählen.
|
Re: MD5 Hash "zurückrechnen"
Wenn ich mich mal nicht täusche ist so ein md5 String 32-stellig in Hex geschreiben. Damit hätten wir um einen String in einer Datei zu speichern schon mal 32 Byte. Dann speichern wir den String aus dem er kommt und dahinter ein #0 um das Ende zu siganlisieren. Das wären bei sehr kurzen Strings von durchschnittlich 8-Char also insgesammt 41 Byte pro MD5-Wert. Nun gibt es aber 32^36 MD5-Strings (36 = a bis z (26) + 1 bis 0 [über 9] (10)). Damit bräuchten wir (32^36)*41 Byte im Durchschnitt. Das wären 6.283231718 * 10^55 wenn mich mein Schultaschenrechner nicht täuscht. Wenn wir das im GB umrechnen (/ 1024 / 1024 / 1024) sind das immerhin noch 5.85171554 * 10^46, also eine Zahl 47-stellige Zahl. Ich weiß ja nicht wie groß deine Festplatte ist, aber meine würde das nicht schaffen. Eventuell könnte man da auch mit Kompression ran, aber auch bei großzügigen 80% Kompression oder gar mehr wäre es nicht möglich das zu speichern denke ich.
edit: ups, es ist natürlich 36^32, womit die Ergebnisse sich natürlich ändern, aber dennoch überdimensioniert sind. |
Re: MD5 Hash "zurückrechnen"
Man könnte eventuell noch Platz sparen, indem man das Trennzeichen und den String dahinter weg lässt. Dann müsste man zwar die komplette Datei durchsuche, aber man würde erstmal ne Menge Platz sparen. Zudem könnte man sich ja vorerst auf 5-6 Stellen beschränken. Dazu dann noch Kompression, dann wäre es zumindest im rahemn des Möglichen.
Allerdings weiß ich auch nicht wie lange die Speicher/Kompressionsprozesse dauern, das wäre dann wieder ein Problem. Weniger Speicher -> mehr Zeit, warum muss die Welt so logisch sein?! |
Re: MD5 Hash "zurückrechnen"
Vergiss es. Wie eben festgestellt, brauchen die Hashs den meisten Platz, und selbst mit einer Kompression, bei der du 90% einsparst, hast du dann immernoch eine 45-stellige GB-Zahl.
|
Re: MD5 Hash "zurückrechnen"
Naja gut, jetzt weiß ich wenigstens, warum man auf so vielen Pages ein Passwort mit 8 oder mehr Stellen wählen muss :wink:
Trotzdem Danke für die fachmännische Beratung :-D -> Jetzt brauch' ich ne neue Aufgabe! |
Re: MD5 Hash "zurückrechnen"
Ich habe mich selber mal mit dieser Thematik beschäftigt, wie sicher ist md5, etc. Gibt es eine Möglichkeit zurückzurechnen, ...
2005 haben Chinesische Forscher erste Kollisionen im md5-Algorithmus gefunden, diese Forschungen wurden afaik allerdings nicht vertieft. (Siehe auch ![]() Der Ansatz, individuelle md5-Rückrechenversuche zu starten wurde afaik schon seit längerem verworfen, zur Zeit wird versucht, große ![]() Als Beispiel sei hier nur ![]() Liebe Grüße, Mo |
Re: MD5 Hash "zurückrechnen"
WordsBG: ich widerspreche dir uns sage, dass es im Falle aller String der Länge 1 bis einschließlich 8 mit allen Zeichen a..z, A..Z, 0..9 (62 + 62^2 + 62^3 + 62^4 + 62^5 + 62^6 + 62^7 + 62^8)*41 Byte benötigt werden. Das wär dann "nur" noch eine siebenstellige Zahl, gemessen in Gigabyte.
|
Re: MD5 Hash "zurückrechnen"
Egal welche Zahl nun stimmt, beide überschreiten die leistungen eines Home PC bei weitem :)
Also diese Idee musst du wohl oder über aufgeben |
Re: MD5 Hash "zurückrechnen"
Mir ist grade noch eingefallen, dass ich - glaube ich - irgendwo mal gelesen hab, jemand hätte es hinbekommen ein Programm zu schreiben, das aus nem Hash den Ausgangsstring berechnen kann, sofern die Länge dieses Strings bekannt ist. Kann das sein?!
|
Re: MD5 Hash "zurückrechnen"
Zitat:
|
Re: MD5 Hash "zurückrechnen"
hm, schade xD
|
Re: MD5 Hash "zurückrechnen"
Zitat:
mfg, Björn |
Re: MD5 Hash "zurückrechnen"
Zitat:
In der PC-Welt war vor einiger Zeit mal Artikel über dieses Verfahren, war ganz Interessant. |
Re: MD5 Hash "zurückrechnen"
Zu Rainbow-Tables gab es auch vor Kurzem einen
![]() |
Re: MD5 Hash "zurückrechnen"
|
Re: MD5 Hash "zurückrechnen"
wow, das teil leistet ja schon einiges... an mein PW ist es zum glück nich ran gekommen ^.^
|
Re: MD5 Hash "zurückrechnen"
Zitat:
|
Re: MD5 Hash "zurückrechnen"
Zitat:
Bei den anderen Wörtern, die ich gehasht versucht hab, hat das Programm immer genau das Wort zurück gegeben. Ich glaube auch nicht, dass es innerhalb der Zeichenkombinationen mit wenigen Zeichen so viele gibt, die den selben Hash erzeugen. |
Re: MD5 Hash "zurückrechnen"
Zitat:
|
Re: MD5 Hash "zurückrechnen"
Zitat:
Zitat:
Zitat:
|
Re: MD5 Hash "zurückrechnen"
Vor 'ner Weile habe ich mal mit 'nem Kumpel versucht, nen Kompressionsverfahren zu entwickeln, was eben auf Hashes basiert. Die Kompression war relativ simpel. Was unmöglich war, war die Dekompression ... Wenn du dir das Hirn verrenkst, kannst du (wenn du ein paar nötige Informationen mitspeicherst) 1-2 Byte wiederherstellen, aber sonst ... Jedenfalls haben wir's dann auch nach 'ner Woche wieder in die Schublade gesteckt ... War aber trotzdem n lustiger Versuch ... :mrgreen:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz