Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Passwort mit MD5 o. Ä. hashen? (https://www.delphipraxis.net/96504-passwort-mit-md5-o-ae-hashen.html)

Postman1986 25. Jul 2007 15:52


Passwort mit MD5 o. Ä. hashen?
 
Hi,
gibt es hier irgendwo ein anschauliches Beispiel zur Erstellung eines Hash von einem String mit beispielsweise MD5?
Dieses DEC hab ich mir bereits angeguckt, da ich aber noch ein ziemlicher Anfänger bin, habe ich keine Ahnung, wie ich es in mein Programm implementieren soll, geschweige denn, wie man es überhaupt ansteuert (hab dort nur eine seltsame Konsole gefunden, bei der leider nichts von MD5 zu erkennen ist).

Wichtig wäre es außerdem, dass es nur zum Hash eines Strings, nicht einer Datei dient, da ich mehrere Daten in eine Datei speichern will, nicht nur das Passwort.

Gruß Daniel

negaH 25. Jul 2007 16:16

Re: Passwort mit MD5 o. Ä. hashen?
 
Delphi-Quellcode:
ResultAsString := THash_MD5.CalcBinary(Password, TFormat_HEX);
Berechnet mit MD5 über den String in Password einen Hash und wandelt diesen Binären Datenwert in einen HEXadezimal formatierten String um. Statt TFormat_HEX kannst du auch

- TFormat_COPY -> ResultAsString ist dann der reale binäre Digest des hash
- TFormat_MIME64 -> ResultAsString ist dann ein INet MIME Base64 formatierter String
- TFormat_UU, TFormat_XX -> UNIX UU/XX Format
- TFormat_PGP, ein nach MIME Base 64 formartierter String der eine prohibitäre 24 Bit Prüfsumme hintendran gehangen bekommt, also sie wie beim PGP
- TFormat_ESCAPE, Escaped String

Schau in Unit DECFmt.pas für die verschiedenen Textformate nach.

Im DEC gibts den Datentyp -> Binary = type LongString. Das ist nichts anderes wie ein String allerdings soll der Name "Binary" darauf hinweisen das in diesem LongString auch nicht darstellbare Zeichen gespeichert sein können. Zb. der Nullterminator #0. Wandelt man so einen String in einen PChar um (zwecks API Aufruf) dann würde der Nullterminator dazu beitragen das man mit abgescnittenen Daten arbeitet. Um das zu signalisieren eben der Binary Datentyp. Man hätte auch ein dynamisches Bytearray benutzen können,das ist richtig. Aber dieser Datentyp ist nich kompatibel zu den Strings. Der Binary Datentyp vereinfacht also vieles, aber der Programmierer hat auch aufzupassen wie er mit dem Binary umgeht. Benutzt du reine Delphi String Operatonen treten keine Fehler damit auf.

Gruß Hagen

Postman1986 25. Jul 2007 16:28

Re: Passwort mit MD5 o. Ä. hashen?
 
Vielen Dank für die schnelle Antwort, aber leider komme ich damit noch nicht so recht weiter.

1. Was genau, muss ich wo, implementieren, damit ich die Library nutzen kann?
2. Die Unit DECFmt.pas existiert bei mir nicht, liegt es vielleicht daran, dass ich die D7 Version von DEC benutze?

Gruß Daniel

negaH 25. Jul 2007 16:59

Re: Passwort mit MD5 o. Ä. hashen?
 
Also

1.) DEC 5.1c downloaden -> http://www.michael-puff.de/Developer...agen_Reddmann/ Luckie ist so freundlich mich zu hosten.

2.) Datei entpacken mit Ordnern, zb. in D:\DEC\

3.) im Ordner ..\Part_I\ findest du alle Source des Part I vom DEC. Also Unit DECFmt.pas und DECHash.pas.

4.) eigenes projekt öffnen und in Uses Klausel -> DECUtil, DECFmt, DECHash einbauen

4.1/2) eventuell Suchpfad in den Projektoptionen auf d:\dec\part_i\ hinzufügen

5.) obige eine Zeile Source in dein Projekt einbauen

Gruß Hagen

Postman1986 25. Jul 2007 17:16

Re: Passwort mit MD5 o. Ä. hashen?
 
Danke, genau das was ich wissen wollte! :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:21 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