3 3 Stimmen

PHP: Zufallsstring oder Zufallspasswort erstellen

Frage von SimplyMe | 19.11.2011 um 18:37 Uhr

Ich möchte mit PHP einen zufälligen String erstellen, dass dann als Erstpasswort verwendet werden soll. Also das was man üblicherweise nach einer Anmeldung per E-Mail bekommt oder wenn man sich ein neues Passwort zuschicken lässt.

Kennt PHP dafür eine bestimmte Funktion oder wie macht man das bestenfalls?

AntwortenPositivNegativDatumStimmen

Computer Experte

Profil anzeigen | Nachricht
Avatar
35 Stimmen

Am einfachsten geht es folgendermaßen mit einer Kombination aus md5() und rand():

echo md5(rand());
//d4f31b020955e1892af61ebff0e3e4d0

Die Funktion rand() erstellt dir eine Zufallszahl und md5() macht dir daraus einen MD5-Hash, der ungefähr so aussieht, wie die zweite Zeile oben.

Wenn dir das zu lang ist, kannst du den String auch direkt mit substr() begrenzen:

echo substr(md5(rand()),0,10);
//a0ba2648ac

Wenn du die 10 oben durch eine andere Zahl ersetzt, kannst du die Stellen verkürzen. Im Beispiel oben habe ich mal eine Länge von 10 Zeichen gewählt.

Oder wir machen direkt eine kleine Funktion daraus:

function zufallsstring($laenge) {
   return substr(md5(rand()),0,$laenge);
}

//Aufruf:
echo zufallsstring(5); //c3a05

Alternativ kannst du auch die Funktion uniqid() verwenden, die allerdings nicht ganz so gute Ergebnisse liefert:

echo uniqid();

Diese Funktion erstellt eine eindeutige ID aus der aktuellen Zeit, damit sind die ersten Stellen immer identisch, wenn du die Funktion kurz hintereinander aufrufst. Als Zufallsstring eignen sie sich aber allemal.

Beschränkung dieser Funktionen

Vorteil meiner oben genannten Funktionen ist, dass sie sich sehr einfach implementieren lassen und sich die Strings auch als gute Passwörter eignen. Es gibt aber auch einen Nachteil: Die Strings bestehen nur aus Kleinbuchstaben und Zahlen. Wir haben keine Möglichkeit, selbst zu bestimmen, welche Zeichen in dem String vorkommen sollen. Wenn man das möchte, muss man sich schon selbst eine größere Funktion basteln.
19.11.2011 um 20:11 Uhr

AntwortenPositiv Negativ

Axuter

Profil anzeigen | Nachricht
Avatar
48 Stimmen

Die Beispiele von Computer Experte sind so einfach wie genial. Trotzdem hier mal ein kleines Beispiel, wie man sich schnell selbst eine Funktion basteln kann, die aus beliebigen Zeichen einen Zufallsstring zaubert:

function zufallsstring($laenge) {
   //Mögliche Zeichen für den String
   $zeichen = '0123456789';
   $zeichen .= 'abcdefghijklmnopqrstuvwxyz';
   $zeichen .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
   $zeichen .= '()!.:=';

   //String wird generiert
   $str = '';
   $anz = strlen($zeichen);
   for ($i=0; $i<$laenge; $i++) {
      $str .= $zeichen[rand(0,$anz-1)];
   }
   return $str;
}

//Aufruf:
echo zufallsstring(6); //G3pgIA

Das ganze funkioniert folgendermaßen: Zuerst definieren wir eine Zeichenkette (hier wegen der Länge umgebrochen) mit allen Zeichen, die vorkommen sollen. Natürlich kann man da noch beliebige Zeichen hinzunehmen oder wegnehmen.

Dann definieren wir mit $str unseren Zufallsstring und schreiben in $anz die Anzahl der Zeichen in dem String mit unseren möglichen Zeichen. Anschließend rufen wir so oft, wie unser neuer String lang sein soll, den Zufallsgenerator rand() in unserer Schleife auf und wählen uns jedes mal ein Zeichen aus dem String möglicher Zeichen heraus.

Schließlich geben wir den fertigen String zurück. Ein möglicher, generierter String könnte "G3pgIA" sein.
22.11.2011 um 10:35 Uhr

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

Wichtiger Hinweis

Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.