Heim  >  Artikel  >  Backend-Entwicklung  >  So generieren Sie zufällige Passwörter in PHP

So generieren Sie zufällige Passwörter in PHP

巴扎黑
巴扎黑Original
2016-12-01 10:59:351134Durchsuche

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);

Methode 2:


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

3. Wiederholen Sie den zweiten Schritt n Mal, um ein Passwort der Länge n zu erhalten

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);

($chars) - 1) ];

}

return $password;
}





Methode drei:

1. Legen Sie ein Zeichenarray $chars fest, einschließlich a – z, A – Z, 0 – 9 und einigen Sonderzeichen

2. Wählen Sie mithilfe von array_rand() zufällig $length-Elemente


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.


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn