AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MD5 Hash "zurückrechnen"

Ein Thema von everdream · begonnen am 7. Okt 2007 · letzter Beitrag vom 9. Okt 2007
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von everdream
everdream

Registriert seit: 22. Feb 2007
Ort: Hiddenhausen
192 Beiträge
 
Delphi 2005 Personal
 
#1

MD5 Hash "zurückrechnen"

  Alt 7. Okt 2007, 14:54
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.
Max
"Das Ziel ist im Weg!"
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: MD5 Hash "zurückrechnen"

  Alt 7. Okt 2007, 15:04
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, einen MD5-Hash zu berechnen (wenn auch mit Einschränkungen), und auch einen Permutationsalgorithmus haben wir, aber schon unter Annahme eines Zeitverbrauchs von 10 µs pro String-Hash brauchst du für alle Strings der Länge genau 6 schon 6,5 Tage.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: MD5 Hash "zurückrechnen"

  Alt 7. Okt 2007, 15:06
Das Wesens eines Hashalgorithmuses ist ja gerade, daß er bicht umkehrbar ist.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von everdream
everdream

Registriert seit: 22. Feb 2007
Ort: Hiddenhausen
192 Beiträge
 
Delphi 2005 Personal
 
#4

Re: MD5 Hash "zurückrechnen"

  Alt 7. Okt 2007, 15:30
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 -.-
Max
"Das Ziel ist im Weg!"
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: MD5 Hash "zurückrechnen"

  Alt 7. Okt 2007, 15:33
Du wist aber schon das Hashfunktionen nicht eineindeutig sind?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von everdream
everdream

Registriert seit: 22. Feb 2007
Ort: Hiddenhausen
192 Beiträge
 
Delphi 2005 Personal
 
#6

Re: MD5 Hash "zurückrechnen"

  Alt 7. Okt 2007, 15:39
Ja, aber wenn bei den wenigen Zeichen wirklich mal ein Hash auf mehrere Zeichenfolgen zutrifft, dann kann man ja aus denen auswählen.
Max
"Das Ziel ist im Weg!"
  Mit Zitat antworten Zitat
Benutzerbild von WordsBG
WordsBG

Registriert seit: 17. Sep 2005
63 Beiträge
 
Delphi 7 Professional
 
#7

Re: MD5 Hash "zurückrechnen"

  Alt 7. Okt 2007, 15:42
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.
  Mit Zitat antworten Zitat
Benutzerbild von everdream
everdream

Registriert seit: 22. Feb 2007
Ort: Hiddenhausen
192 Beiträge
 
Delphi 2005 Personal
 
#8

Re: MD5 Hash "zurückrechnen"

  Alt 7. Okt 2007, 15:50
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?!
Max
"Das Ziel ist im Weg!"
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: MD5 Hash "zurückrechnen"

  Alt 7. Okt 2007, 15:56
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.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von everdream
everdream

Registriert seit: 22. Feb 2007
Ort: Hiddenhausen
192 Beiträge
 
Delphi 2005 Personal
 
#10

Re: MD5 Hash "zurückrechnen"

  Alt 7. Okt 2007, 16:01
Naja gut, jetzt weiß ich wenigstens, warum man auf so vielen Pages ein Passwort mit 8 oder mehr Stellen wählen muss

Trotzdem Danke für die fachmännische Beratung


-> Jetzt brauch' ich ne neue Aufgabe!
Max
"Das Ziel ist im Weg!"
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz