Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - MD5 Hash erzeugen
Sl0w - Mi 02.06.10 22:32
Titel: MD5 Hash erzeugen
Halo zusammen,
ich möchte mit meinem Programm aus einem String einen MD5 Hash erzeugen.
Das ganze klappt zwar auch schon aber bekomme ich einen anderen Hash dabei raus, als z.B. auf dieser Seiten
Hier [
http://elmar-eigner.de/md5_maker.html]
Ich habe es mit der MD5.pas versucht und auch mit anderen die ich so gefunden habe.
Mein Aufruf sieht so aus:
Delphi-Quelltext
1:
| tmpPW := md5print(md5string(Pw)); |
habe es aber auch schon so versucht:
Delphi-Quelltext
1:
| tmpPW := md5print(md5string(AnsiToUtf8(PW))); |
bringt beides das gleiche Ergebnis.
PW ist ein Übergabeparameter der Funktion vom Typ string und tmpPW ist eine Variable in der Funktion auch vom Typ string.
Ich weiß nicht ob das wichtig ist aber ich nutze Delphi 2009.
Ich weiß escht nicht was ich falsch mache.
Ich hoffe ihr könnt mir weiter helfen.
MFG
Lars
Xiut - Mi 02.06.10 22:47
Benutzt du die Funktion nicht zwei mal bei einem String?
Also kommt denn bei nur
tmpPW := md5print(Pw);
denn das richtige raus? Ich kenn mich nicht damit aus also mit der pas Datei, aber das sieht halt so aus als würde das zwei mal auf einen String angewendet werden.
So verschlüsselst du doch die Verschlüsslung oder nicht?
Edit: Ach vergiss das ^^
Hab das mit dem print nicht gesehen =)
Setzt du denn eine Internetverbindung vorraus? Dann würde ich mir das einfach von dem Generator generieren lassen.
Sl0w - Mi 02.06.10 23:04
Hallo Xiut,
eine Internetverbindung muss vorhanden sein.
Wie kann ich das denn an den Generator verschicken und erhalte dann den Hash zurück.
Sowas habe ich noch nie gemacht.
MFG
Lars
Xiut - Mi 02.06.10 23:11
Hast du denn einen eigenen Server auf den du eine Datei hochladen kannst?
Also einen FTP Server?
Sl0w - Mi 02.06.10 23:21
Nein habe ich nicht.
Das Programm schickt HTTP: Request Anfragen ab und wertet die Antwort aus.
Bei der einen Anfrage muss ich einen Benutzernamen und ein Passwort, was als md5 Hash geschickt werden muss, übertragen.
Deswegen muss eine Internetverbindung da sein.
Ich dachte man könnte das vllt. genauso an die Seite des Generators schicken!?
TheQuestion - Mo 14.06.10 21:32
Ein md5-Hash kann ja auch als Hexadezimalzahl betrachtet werden (für Hashtabelle).
Wie kann ich also einen solchen hash...md5hash := MD5Print(MD5String(pattern));...in einen Integerwert umwandeln?
BenBE - Di 15.06.10 08:46
Gar nicht, weil ein MD5-Hash 16 Bytes (128 Bit) breit ist, ein Integer aber nur 32.
TheQuestion - Di 15.06.10 17:18
BenBE hat folgendes geschrieben : |
| Gar nicht, weil ein MD5-Hash 16 Bytes (128 Bit) breit ist, ein Integer aber nur 32. |
Mhmm, das ist natürlich richtig. Ich möchte mit einem MD5Hash eine Modulus-Berechnung durchführen - Ich kann beim Ergebnis also von einem 32bit Integer ausgehen. Kann ich eine solche Berechnung irgendwie realisieren?
Oder vom Hash einfach eine Bitfolge abschneiden und dann in einen Integer umwandeln?
BenBE - Di 15.06.10 17:45
Du könntest den Hash als ein Array of Byte auffassen und dann mit einer Groß-Zahl-Bibliothek wie BigNum2 damit rechnen ...
ZeitGeist87 - Di 15.06.10 18:45
Ich weiß nicht, welche md5.pas du hast.
Ich verwende die im Anhang und funktioniert problemlos.
Delphi-Quelltext
1:
| Hash:= StrMD5('meinString'); |
TheQuestion - Di 15.06.10 19:36
BenBE hat folgendes geschrieben : |
| Du könntest den Hash als ein Array of Byte auffassen und dann mit einer Groß-Zahl-Bibliothek wie BigNum2 damit rechnen ... |
Mhmm, das ist aber sicher ziemlich langsam? Viel schneller wäre es, den String einfach auf die benötigte länge zu schneiden? Das wäre ja auch immer gleich.
ZeitGeist87 hat folgendes geschrieben : |
Ich weiß nicht, welche md5.pas du hast.
Ich verwende die im Anhang und funktioniert problemlos.
Delphi-Quelltext 1:
| Hash:= StrMD5('meinString'); | |
Kann ich mir ehrlich gesagt nicht ganz vorstellen, wie soll das gehen? Dazu reicht ja nichtmal ein 64bit Betriebssystem aus. Wie rechnest du dann damit?
ZeitGeist87 - Di 15.06.10 21:18
Ich versteh dein Problem nicht.
Oben sagst du, dass bei deiner Funktion nicht das herauskommt, was du online überprüfst.
Ich hab es getestest, mit der Unit kommen sowohl online, als auch in der Anwendung identische Hashes heraus.
So far..
Edit: Mein Gott..wie soll man da nicht durcheinander kommen, wenn auf einmal noch ne Frage im selben Thread auftritt -.-
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!