Entwickler-Ecke

Algorithmen, Optimierung und Assembler - Entschlüsseln mit MD5


rolandt4088 - Mo 11.05.09 18:16
Titel: Entschlüsseln mit MD5
Hallo,

folgende Procedure benutze ich um ein Passwort zu verschlüsseln.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure Tf_scy.JvXPButton1Click(Sender: TObject);
var
  MD5: TDCP_md5;
  Digest: array [0..15of Byte;  // MD5 produces a 128bit digest (16bytes)
  Reslt: String;
  Index: Integer;
begin
 MD5 := TDCP_md5.Create(Self);    // create the hash
  MD5.Init;                       // initialize it  
  MD5.UpdateStr(e_passwort.Text);      // hash the string  
  MD5.Final(Digest);              // produce the digest  
  MD5.Free;  
    
  Reslt := '';  
  for Index := 0 to 15 do
    Reslt := Reslt + IntToHex(Digest[Index], 2);
 //Ergebnis
 edit1.Text := reslt;
end;

Wie bekomme ich nun die Verschlüsselung wieder entschlüsselt?

Für einen Tipp bin ich sehr dankbar


Xentar - Mo 11.05.09 18:20

MD5 ist keine Verschlüsselung..
MD5 bildet einen Hashwert von einer Datei, um z.B. beim Empfänger zu vergleichen, dass die Datei korrekt angekommen ist. Diesen KANNST du nicht wieder "entschlüsseln".


rolandt4088 - Mo 11.05.09 18:23

Vielen Dank für Deine schnelle Antwort.
Ich dacht ich könnte damit Passwörter unkenntlich machen.

Gibt es denn etwas womit man z.B. Passwörter kodieren kann?

mfg


Xentar - Mo 11.05.09 18:26

Ja, für Passwörter verwendet man das auch.
Du bildest einen MD5 Hash von einem Passwort, und speichert diesen Hash. Bei der Eingabe vergleichst du den Hash von dem eingegebenen Passwort, mit dem gespeicherten Hash. Somit hast du das "Passwort" zwar gespeichert, aber mann es nicht (bzw. nur seeehr schwer) auf das richtige Klartext Passwort zurückrechnen.

Das ganze ist wesentlich sicherer, als wenn du das Passwort selber abspeicherst.


rolandt4088 - Mo 11.05.09 18:30

Vielen Dank für die Hilfe und dem Denkanstoß

mfg


BenBE - Di 12.05.09 08:53

Ich fass den aktuellen Stand bzgl. Hashverfahren einmal zusammen:
SHA1 ist angeknackt, MD5 gebrochen und CRC32 in der Versenkung ;-)

Und die netten bunten Tabellen (Rainbow Tables) auch nicht vergessen ...

Verwende bitte ausschließlich Salted Hashs für deine Anwendungen. MD5 bitte komplett meiden (allein für Legacy-Anwendungen), Neuentwicklungen sollten SHA256/512 oder Whirlpool verwenden (Die RIPE hat auch ein paar nette Algos, da hab ich aber keine Papers zu deren Sicherheit verfügbar).


Xearox - Mo 01.02.10 13:39

Wo bekommt man den Code den zur verschlüssellung von SHA 512 her?
um es im Programm zu implementieren?


Edit: Oops...sehe grade, dass das Thema, nun ja, schon was älter ist...lol


BenBE - Mo 01.02.10 15:24

GIDF [http://gidf.de/?q=Delphi+%22SHA512%22+Implementierung] --> http://home.netsurf.de/wolfgang.ehrhardt/crchash_de.html


acnut - Mo 01.02.10 15:27

Hier
[url]
http://www.example-code.com/delphi/crypt_hash_algorithms.asp
[/url]

____________________
Zitat:

Verwende bitte ausschließlich Salted Hashs für deine Anwendungen. MD5 bitte komplett meiden (allein für Legacy-Anwendungen), Neuentwicklungen sollten SHA256/512 oder Whirlpool verwenden (Die RIPE hat auch ein paar nette Algos, da hab ich aber keine Papers zu deren Sicherheit verfügbar).

warum md5 meiden?

mfg


JüTho - Mo 01.02.10 16:26

Frage:
user profile iconacnut hat folgendes geschrieben Zum zitierten Posting springen:
warum md5 meiden?

Antwort:
user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
SHA1 ist angeknackt, MD5 gebrochen und CRC32 in der Versenkung ;-)

Jürgen


acnut - Mo 01.02.10 16:37

user profile iconJüTho hat folgendes geschrieben Zum zitierten Posting springen:
Frage:
user profile iconacnut hat folgendes geschrieben Zum zitierten Posting springen:
warum md5 meiden?

Antwort:
user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
SHA1 ist angeknackt, MD5 gebrochen und CRC32 in der Versenkung ;-)

Jürgen



:( ok hab jetzt news darüber gelesen:)


mfg


Tobi482 - Mo 01.02.10 17:43

Hi,

ich habe zwar nicht soviel Ahnung welche Funktion wann und wo bereits durch Rainbow-Tables gecrackt worden ist, jedoch gibt es bestimmt noch viele andere Einwegfunktionen (also Funktionen die "schwer" umkehrbar sind) für die es noch keine Rainbow-Tables gibt.


Vielleicht Hilft dir die Idee des Salted-Hash weiter.
http://de.wikipedia.org/wiki/Salted_Hash


Ahh sorry habe überlesen, das BenBE das bereits geschrieben hatte.
Dann vergiss was ich gesagt habe^^

Mit freundlichen Grüßen
Tobi


Xearox - Mo 01.02.10 18:01

user profile iconacnut hat folgendes geschrieben Zum zitierten Posting springen:
Hier
[url]
http://www.example-code.com/delphi/crypt_hash_algorithms.asp
[/url]

____________________
Zitat:

Verwende bitte ausschließlich Salted Hashs für deine Anwendungen. MD5 bitte komplett meiden (allein für Legacy-Anwendungen), Neuentwicklungen sollten SHA256/512 oder Whirlpool verwenden (Die RIPE hat auch ein paar nette Algos, da hab ich aber keine Papers zu deren Sicherheit verfügbar).

warum md5 meiden?

mfg


user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
GIDF [http://gidf.de/?q=Delphi+%22SHA512%22+Implementierung] --> http://home.netsurf.de/wolfgang.ehrhardt/crchash_de.html



hab die beiden sachen schon vorher im Net gefunden, aber verstehe NULL davon


Xearox - Mo 01.02.10 18:10

in der Zip, die man beim Post von BenBE downloaden kann, da ist die SHA512 fehlerhaft.
kann da jemand mal nach schauen?


Jakob_Ullmann - Mo 01.02.10 18:24

Schau doch einfach hier, kann man direkt so abschreiben (auch wenn da nur SHA-256 und nicht SHA-512 beschrieben ist): http://en.wikipedia.org/wiki/SHA_hash_functions

EDIT: Warum erzeugt man nicht für die Salted Hashes Rainbow-Tables? Sollte doch in linearer Zeit schaffbar sein. :wink:


Xearox - Mo 01.02.10 18:36

ich habe null ahnung davon...ich brauche aber eine gute verschlüsselung...
deswegen wollte ich doch nur wissen, was in der zip bei SHA512 falsch ist....


BenBE - Mo 01.02.10 18:46

Die Art, wie Du's in deinem Source nutzt. Aber das gehört in einen anderen Thread.