Schreibt man ein Loginsystem, bei dem die Passwörter verschlüsselt gespeichert werden, ist es unmöglich ein vergessenes Passwort dem User zurückzuschicken. Also muss ein neues generiert werden. Dafür gibt es viele Möglichkeiten, und ich werde hier mal ein paar Auflisten, und bald einen Benchmark für diese Methoden nachliefern.
Mir sind spontan 2 Möglichkeiten eingefallen, die ich beide noch einmal in einer etwas anderen Ausführung aufgeschrieben habe, bzw. eine davon noch etwas präziser gestaltet habe, weil diese zu vorhersehbar ist.
Methode 1:
1 2 3 4 5 6 7 8 9 | function generatePW($length){ $characters = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'); $password = ''; for($i=0;$i<$length;$i++){ shuffle($characters); $password .= $characters[array_rand($characters)]; } return $password; } |
Methode 2:
1 2 3 4 5 6 7 8 | function generatePW($length){ $characters = "abcdefghijklmnopqrstuvwxyz0123456789"; $password = ''; for($i=0;$i<$length;$i++){ $password .= substr($characters, (mt_rand() % (strlen($characters))), 1); } return $password; } |
Methode 3:
1 2 3 | function generatePW($length){ return substr(sha1(time()), 0, $length); } |
Methode 4:
1 2 3 | function generatePW($length){ return substr(sha1(time()*uniqid(mt_rand())), 0, $length); } |
Das sind die 4 Methoden, die mir spontan eingefallen sind. Methode 1 und 2 sind vom Sinn her das gleiche, nur bei dem einen kommen die Zeichen aus einem Array, bei dem andern aus einem String.
Der Vorteil dieser Methode ist, dass es möglich ist, beliebig lange Passwörter zu generieren, und einfach weitere Zeichen hinzufügen kann.
Methode 4 ist nur eine erweiterte Version der 3. Methode, da man die Passwörter bei Methode 3 leicht voraussagen kann. Aber manchmal reicht es ja trotzdem, deswegen hier die Erwähnung ![]()
Der Nachteil dieser Methode ist, dass man an eine bestimmte Passwortlänge gebunden ist, weil sha1 Hashes nur 40 Stellen haben. Dies ließe sich aber mit einer kleinen Änderung auch beheben. Desweiteren ist man dort an Kleinbuchstaben und Zahlen gebunden, weitere Zeichen lassen sich ohne weiteres nicht einfügen.
Welche Methode jetzt aber die schnellste ist, und wie man Methode 4 so umbaut, dass man auch Passwörter mit mehr als 40 Zeichen generieren kann, erfahrt ihr in bald in einem weiteren Beitrag.
