Zufallspasswort erstellen
in PHP · Autor: Sebastian Fuchs
Vor kurzem habe ich eine Möglichkeit gesucht, möglichst zufällige Passwörter mit verschiedenen Zeichen zu erstellen.Da es im Prinzip keinen wirklichen Zufall gibt, muss man auf möglichst zufällige Funktionen zurückgreifen.
Dazu bietet sich der Timestamp, also die Zeit in Sekunden seit 1970, besonders gut an.
<?php
$zeit = time();
?>
Mit dem Befehl time() wird die aktuelle Zeit in Sekunden abgerufen. Das könnte dann beispielweise so aussehen: 1171968240.$zeit = time();
?>
Wie man sieht, besteht unser potentielles Passwort bisher nur aus Ziffern, was als Passwort ja noch nicht optimal ist. Deshalb bearbeiten wir diesen Timestamp jetzt noch einmal, sodass auch Buchstaben mit ins Spiel kommen.
Damit das ganze wieder mehr oder weniger zufällig ist, greifen wir auf die Funktion md5() zurück, die den MD5-Code des Strings errechnet, was in unserem Fall im Prinzip eine weitere zufällige Verschlüsselung darstellt.
<?php
$zeit = time();
$zeitMD5 = md5($zeit);
?>
Mit dem Timestamp von eben würde unser Ergebnis jetzt so aussehen: 1ffd41f885c040b79cf801038437dba5.$zeit = time();
$zeitMD5 = md5($zeit);
?>
Man sieht, dass das potentielle Passwort jetzt schon wesentlich länger ist und sowohl Ziffern als auch Buchstaben enthält. Im Prinzip können wir das Passwort jetzt schon so verwenden, es bietet sich aber noch an, das ganze auf eine bestimmte Länge zu kürzen.
Dazu verwenden wir die PHP Funktion substr() (siehe auch PHP Tutorial: Strings kürzen), mit der wir nur einen bestimmten Teil des Codes auslesen lassen können.
Für unser Beispiel wollen wir nun ein 10 Zeichen langes Passwort.
<?php
$zeit = time();
$zeitMD5 = md5($zeit);
$passwort = substr($zeitMD5, 0, 10);
?>
Mithilfe von substr() werden 10 Zeichen, beginnend bei dem ersten ("0"), aus dem generierten Code ausgelesen und dann der Variable $passwort zugewiesen.$zeit = time();
$zeitMD5 = md5($zeit);
$passwort = substr($zeitMD5, 0, 10);
?>
Unser Endergebnis ist jetzt ein relativ zufälliges, 10 Zeichen langes Passwort, das sowohl Ziffern als auch Buchstaben enthält. Für unser Beispiel hätten wir folgendes Passwort: 1ffd41f885.
Das ganze können wir jetzt noch ein wenig kürzer schreiben und uns damit einen Passwortgenerator bauen:
<?php
$passwort = substr(md5(time()), 0, 10);
echo $passwort;
?>
Jedesmal, wenn dieser Code aufgerufen wird, wird ein anderes, relativ zufälliges Passwort ausgegeben. Somit sind wir auch schon wieder am Ende des Tutorials.$passwort = substr(md5(time()), 0, 10);
echo $passwort;
?>
Ich hoffe, dass es dem ein oder anderem ein wenig geholfen hat.
· zurück zu "PHP Tutorials"






