Die Verwendung von PHP zum Entwickeln von Anwendungen, insbesondere von Website-Programmen, erfordert häufig die Generierung zufälliger Passwörter. Beispielsweise wird ein zufälliges Passwort für die Benutzerregistrierung generiert, und ein zufälliges Passwort ist auch für das Zurücksetzen des Passworts des Benutzers erforderlich. Ein Zufallskennwort ist eine Zeichenfolge fester Länge. Hier habe ich als Referenz mehrere Methoden zum Generieren zufälliger Zeichenfolgen zusammengestellt.
Methode 1:
1. Erzeugen Sie eine zufällige Ganzzahl von 33 – 126, z. B. 35,
2. Konvertieren Sie 35 in das entsprechende ASCII-Codezeichen, z. B. 35 Entsprechend #
3. Wiederholen Sie die obigen Schritte 1 und 2 n-mal, um eine Verbindung zu einem n-stelligen Passwort herzustellen
Dieser Algorithmus verwendet hauptsächlich zwei Funktionen, mt_rand ( int $min , int $ max) Die Funktion wird verwendet, um zufällige Ganzzahlen zu generieren, wobei $min – $max der Bereich des ASCII-Codes ist. Hier ist er 33-126. Der Bereich kann nach Bedarf angepasst werden Die Codetabelle entspricht den englischen Buchstaben a – z. Insbesondere wird die Funktion chr (int $ascii) verwendet, um die entsprechende Ganzzahl $ascii in das entsprechende Zeichen umzuwandeln.
function create_password($pw_length = 8)
{
$randpwd = '';
for ($i = 0; $i < $pw_length; $i++)
{
$randpwd .= chr(mt_rand(33, 126)); = 6
echo create_password(6);
1 eine Zeichenfolge $chars, einschließlich a – z, A – Z, 0 – 9 und einige Sonderzeichen
2. Wählen Sie zufällig ein Zeichen in der Zeichenfolge $chars aus
function generic_password( $length = 8 ) {
// Passwort-Zeichensatz, Sie können alle benötigten Zeichen hinzufügen
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789! @#$%^&*()-_ [] {}<>~`+=,.;:/?|'; $password = ''; für ( $ i = 0; $i < $length; $i++ )
. Jedes Element von $chars
// $password .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
}
return $password;
}
Methode drei:
1. Legen Sie ein Zeichenarray $chars fest, einschließlich a – z, A – Z, 0 – 9 und einigen Sonderzeichen
aus dem Array $chars aus. 3. Nehmen Sie entsprechend dem erhaltenen Schlüsselnamen-Array $keys die Zeichen aus dem Array $chars heraus und verketten Sie die Zeichenfolge. Der Nachteil dieser Methode besteht darin, dass dieselben Zeichen nicht wiederholt abgerufen werden.
function make_password( $length = 8 )
{// Passwort-Zeichensatz, Sie können alle benötigten Zeichen hinzufügen
$chars = 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', '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', '!',
'@','#', '$', '%', '^', '&', '*', '(', ')', '- ', '_',
'[', ']', '{', '}', '<', '>', '~', '`', '+', ' =' , ',',
'.', ';', ':', '/', '?', '|');
// Zufällig $length-Elemente aus $ auswählen chars Schlüsselname des Array-Elements
$keys = ($chars, $length);
$password = '';
for($i = 0; $i < $length; $i++)
{
// $length Array-Elemente zu einem String verketten
$ Passwort .= $chars[$keys[$i]];
}
return $password;
}
Zeiteffizienzvergleich
Wir verwenden den folgenden PHP-Code, um die Laufzeit der oben genannten drei Funktionen zur zufälligen Passwortgenerierung zu berechnen, um ein 6-stelliges Passwort zu generieren, und führen dann einen einfachen Vergleich ihrer Zeiteffizienz durch.
function getmicrotime()
{
list($usec, $sec) = explosion(" ",microtime());
return ((float )$usec + (float)$sec);
}
// Startzeit aufzeichnen
$time_start = getmicrotime();
// PHP zur Ausführung hinzufügen hier Code, wie zum Beispiel:
// echo create_password(6);
// Endzeit aufzeichnen
$time_end = getmicrotime();
$time = $time_end - $time_start;
// Gesamtlaufzeit ausgeben
echo "execution time $time seconds";
?>
Das Endergebnis ist:
Methode eins: 9,8943710327148E-5 Sekunden
Methode zwei: 9,6797943115234E-5 Sekunden
Methode drei: 0,00017499923706055 Sekunden
Sie können die Ausführungszeit von Methode eins und sehen Methode zwei Sie sind fast gleich, aber die Laufzeit von Methode drei ist etwas länger.