Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Passworthash - einfach und schnell (https://www.delphipraxis.net/147460-passworthash-einfach-und-schnell.html)

SonicTTH 9. Feb 2010 10:46


Passworthash - einfach und schnell
 
Hallo,

Ich würde gerne wissen wie man am besten mit einer einzigen funktion einen passworthash kriegen könnte.

So z.b. MakeHash(Passwort):String ; <- Wobei der String dann der hash ist der raus kommt.

Ich hab mir schon vor einer weile mal die DCPCpiher + Hashes Komponenten geladen und damit verschiedene dinge versucht, allerdings ist die dokumentation dazu sehr schlecht, denn wenn ich die anweisungen befolge wie ich mir einen hash generieren kann bekomm ich da am ende immer nur irgendwelche zahlen raus, die zwar bei jeder generierung gleich sind, aber für mich KEINEN hash darstellen.

was ich rauskriege: 1235412452123123412231234212312312324232122
was ich denke das ein hash sein sollte: fdgfgsjdfgkhdgfr67df6gdf67sg76dfs87g687dfs6g7d6

Die zahlen die dabei rauskommen sind immer einzelne zahlen zwischen 0 und 255 und werden an einen string gereiht.

Also: Was mache ich falsch, bzw wie könnte ich einfacher an einen hash kommen?

Corpsman 9. Feb 2010 10:56

Re: Passworthash - einfach und schnell
 
Ich glaube du verstehst hier was falsch

ein Hash ist eine Zahl.

p80286 9. Feb 2010 10:59

Re: Passworthash - einfach und schnell
 
hallo SonicTTH

versuch doch mal Asserbads MD5. Ich komme ganz gut damit zurecht.

Was Du daraus benötigtst ist

MD5_Hash_OverBuffer(buf: Pointer; cblen: DWORD): TMD5digest;
MD5_Hash2String(MD5: TMD5Digest): String;

vielleicht gibt es bessere Umsetzungen, aber für meine Anforderungen reicht es.
Und es ist einfach zu handhaben.

Gruß
K-H

himitsu 9. Feb 2010 11:09

Re: Passworthash - einfach und schnell
 
Heiß: Eine Hashfunktion berechnet grundsätzlich erstmal eine Zahl oder eine Reihe von Zahlen.

Und diese Zahl(en) kann man dann in "irgendeinem" anderem Format als String darstellen.
Oftmals wird dafür die Hexadezimale oder eine Base64-Darstellung gewählt.

SonicTTH 9. Feb 2010 11:15

Re: Passworthash - einfach und schnell
 
Ich kenne mich mit pointern nicht so aus deshalb wäre ich se
hr dankbar wenn du mir erklären könntest wie ich aus dem klartext passwort als string den hash mache mithilfe der prozeduren die du mir da gezeigt hast

soviel ist mir schonmal klar:

Was hier rauskommt:
MD5_Hash_OverBuffer(buf: Pointer; cblen: DWORD): TMD5digest;

Also das TMD5digest, kommt hier rein:
MD5_Hash2String(MD5: TMD5Digest): String;
Und da kommt dann der hash raus, richtig?

Aber was ist buf: Pointer, und cblen? Das sagt mir alles nichts :(

Danke schonmal für die schnelle antwort und wenn gleich noch eine kommt nochmal danke :)

Sharky 9. Feb 2010 11:20

Re: Passworthash - einfach und schnell
 
Hai,

es sollte eigentlich so gehen:
Delphi-Quellcode:
var
  hashAsString : String;
begin
  hashAsString := MD5_Hash2String(MD5_HashForString('DeinKennWortString'));
end;

p80286 9. Feb 2010 11:28

Re: Passworthash - einfach und schnell
 
Nur mal so schnell getippt
Delphi-Quellcode:
form1.Memo1.Text=MD5_Hash2String(
                 MD5_Hash_OverBuffer(@form1.passwort.Text[1],length(form1.passwort.Text)));
Ich gehe davon aus, das es ein Tedit auf Deinem Form gibt, das "passwort" heißt.
Deine Eingabe steht also in passwort.Text und ist ein String.
Da Pointer ein Zeiger ist, der auf eine Speicherstelle zeigt, mußt Du wann immer ein Pointer verlangt wird hier die Adresse einen speicherstelle übergeben. In unserem Falle ist das @(.....Text[1]) (oder ADDR(.....Text[1])) die [1] stellt sicher, das auch wirklich der Text-Bereich des Strings übergeben wird.
Und da der Ponter natürlich keine Längen-Information mitschleppt, muß im zweiten Parameter die Länge des Strings mit übergeben werden.

Das vorher natürlich noch eine Längenüberprüfung stattfinden muß, setz' ich mal als selbstverständlich vorraus. PW mit derLänge 0 sind ja nicht sehr sinnvoll.

Gruß
K-H

@sharky
wo kommt denn der MD5_HashforString her? hinke ich so hinterher?

Sharky 9. Feb 2010 11:57

Re: Passworthash - einfach und schnell
 
Zitat:

Zitat von p80286
.... @sharky
wo kommt denn der MD5_HashforString her? hinke ich so hinterher?

Ziemlich weit unten in der MD5.pas :
Delphi-Quellcode:
{
  Danke an Sharky, der mich darauf hinwies, dass die Benutzer
  eine solche Funktion wohl lieber aufrufen würden.
 
  Sharky ist Moderator in der DP -> [url]http://www.delphipraxis.net/user4.html[/url]
}
function MD5_HashForString(aValue: String): TMD5Digest;
var
  Context: TMD5_CTX;
begin
  MD5Init(Context);
  MD5Update(Context, @aValue[1], Length(aValue));
  MD5Final(Context, Result);
end;
:stupid:

p80286 9. Feb 2010 12:24

Re: Passworthash - einfach und schnell
 
Danke!

Meine Version ist wohl zu alt!

gruß
K-H

SonicTTH 9. Feb 2010 13:30

Re: Passworthash - einfach und schnell
 
Danke für die schnellen und vielen Antworten!

Ihr seid Spitze! :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:34 Uhr.
Seite 1 von 2  1 2      

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