[PHP] PW verschlüsseln mit MD5()

Showmaker

Erfahrener Benutze
29 April 2006
250
14
Hi Leute,

ich möchte gerne bei meinem Loginscript mein PW verschlüsseln lassen.

Ich lasse erst ein PW generieren und dann verschlüsseln:

PHP:
$crypttime = md5(crypt(time()));
$pass  = substr(ereg_replace("[^a-z0-9]", "", $crypttime), 0, 8);
$pass_ver = md5($pass);

Dan speicher ich die var $pass_ver in einer MySQL Datenbank.
Das klappt auch ohne Probleme aber jetzt lasse ich mir das PW auch per E-Mail senden auch die $pass_ver zum Testen aber da kommt schon eine anders verschlüsselter Code raus wenn ich die Verschlüsselung komplett raus lasse und nur §pass in der Datenbank speicher und mir per E-Mail zusende dann sind die gleich.

Ich hoffe Ihr versteht mein Problem
 
MD5 verschlüsselt nicht, sondern hasht nur ;)
x ≠ md5(md5(x))
 
Danke für die schnellen Antworten ich hatte auf einer seite gelesen das man die md5 für PW nehmen kann. welche Funktion ist den am besten geeignet für PW?
 
na md5 ist am besten geeignet für Passwörter.

Du machst das folgendermaßen:

1. Zufälliges Passwort generieren und per email zuschicken oder nach einem Passwort fragen.

2. Passwort mit md5 verschlüsseln und verschlüsselt abspeichern.

3. Beim Einloggen das Passswort eingeben lassen und die Eingabe ebenfalls mit md5 verschlüsseln. Dann beide verschlüsselten Werte vergleichen.
 
bitte nicht verschlüsseln sagen, das ist und bleibt ein hash (der kollidieren kann). verschlüsseln ist was ganz anderes.

ansonsten passt das schon so.

der stumpi
 
na md5 ist am besten geeignet für Passwörter.

Du machst das folgendermaßen:

1. Zufälliges Passwort generieren und per email zuschicken oder nach einem Passwort fragen.

2. Passwort mit md5 verschlüsseln und verschlüsselt abspeichern.

3. Beim Einloggen das Passswort eingeben lassen und die Eingabe ebenfalls mit md5 verschlüsseln. Dann beide verschlüsselten Werte vergleichen.

Danke genau so habe ich es auch gemacht ich hatte nur ein klein Fehler.
In der datenbank durfte das PW nur 20 zeichen aber hash hat mehr darum wurd er nicht volständig gespeichert.

Jetzt gehts.
 
Der Hash-Algorithmus ist eher nebensächlich. Entscheidend ist, was man in den Hash reinpackt, denn auch bei sha1 funktionieren Rainbow-Tables, wenn man nichts dagegen unternimmt.

das hashes gesalted werden, hatte ich eigentlich als selbstverständlich empfunden.
Und doch macht es einen Unterschied, wenn du bei md5 1000mal effizienter (Zahlen aus der Luft gegriffen) Kollisionen finden kannst, als bei sha1.
 
Der Hash-Algorithmus ist eher nebensächlich. Entscheidend ist, was man in den Hash reinpackt, denn auch bei sha1 funktionieren Rainbow-Tables, wenn man nichts dagegen unternimmt.

Aber bei MD5 ist es mittlerweile einigermaßen effizient möglich, Kollisionen zu berechnen. Insbesondere in Zertifikaten ist der Einsatz von MD5 mittlerweile fahrlässig. Vergleiche dazu auch MD5 considered harmful today.
 
Am besten du suchst dir deinen eigenden Algorithmus und schreibst in in eine Funktionen. So kannst du sicher gehen das keiner den Hash knackt, wenn dein Server (FTP etc.) nicht gehackt wird. :)
 
md5 + salt reicht um die Bruteforcer mit ihren Dictionaries und Grafikkarten stark auszubremsen.
Gut ist sowas wie: md5(md5($pass).md5($salt))
Recht einfach und sicher.
 
md5 + salt reicht um die Bruteforcer mit ihren Dictionaries und Grafikkarten stark auszubremsen.
Gut ist sowas wie: md5(md5($pass).md5($salt))
Recht einfach und sicher.
Linux verwendet da auch ne ganz nette Methode:
Die Hashen das Passwort einfach 100mal, selbst mit Bruteforce kommt man da nimmer ran, ich gehe mitlerweile nen ähnlichen Weg:
100mal das PW mit sha1 + salt hashen, selbst mit berechneten Kollisionen kommt man da kaum noch ran, ne einfache Kollision ist schon schwer zu berechnen, aber ne Kollision die durch 100maliges anwenden entsteht? :ugly:

Am besten du suchst dir deinen eigenden Algorithmus und schreibst in in eine Funktionen. So kannst du sicher gehen das keiner den Hash knackt, wenn dein Server (FTP etc.) nicht gehackt wird. :)

und das sollte er definitiv NICHT tun :!:
Denn jeden Algorithmus, denn er schreibt, möge er noch so gutes "mathematisches Wissen" haben, wird DEUTLICH unsicherer sein als sogar die veralteten md-Version (md4, md3 usw)
Hinter solchen Algorithmen sitzen Mathe-Genies, die deutlich mehr Ahnung haben als wir "Normalsterblichen".
Auf den sichersten bekannten Hashing-Algorithmus zu setzen ist deutlich sicherer als sich seine eigene Kinderkacke zusammenzuschreiben

Edit: an den Popler: SECURITY BY OBSCURITY funktioniert nicht
 
Zuletzt bearbeitet:
100mal das PW mit sha1 + salt hashen, selbst mit berechneten Kollisionen kommt man da kaum noch ran, ne einfache Kollision ist schon schwer zu berechnen, aber ne Kollision die durch 100maliges anwenden entsteht? :ugly:
Kannst ja noch toppen, indem du als ersten Salt die Info reinkodierst, wie oft (z.B. "asd" = 50x sha1+"Salt1" hashen, "ghj" = 75x sha1+"Salt2" hashen, "ijij" = 42x md5/sha1+"Salt3" abwechseln hashen) danach noch gehasht wird.
Hast dann nur das "Problem", dass du für das Überprüfen des Passworts selber "bruteforcen" musst, welches der erste Hash war. Drum nur eine Hand von Möglichkeiten verwenden, damit du noch effizient vergleichen kannst.