Heim  >  Artikel  >  Backend-Entwicklung  >  Eine kurze Einführung, wie PHP zufällige Passwörter generiert

Eine kurze Einführung, wie PHP zufällige Passwörter generiert

黄舟
黄舟Original
2017-08-10 11:43:281162Durchsuche


Die Verwendung von PHP zur Entwicklung von Anwendungen, insbesondere von Website-Programmen, erfordert häufig die Generierung zufälliger Passwörter. Beispielsweise wird für die Benutzerregistrierung ein zufälliges Passwort generiert, und auch für das Zurücksetzen des Benutzers ist ein zufälliges Passwort erforderlich Passwort. Ein Zufallskennwort ist eine Zeichenfolge fester Länge. Hier habe ich mehrere Methoden zum Generieren zufälliger Zeichenfolgen als Referenz zusammengestellt.

Methode 1

  1. Generieren Sie eine zufällige Ganzzahl von 33 – 126, z. B. 35,

  2. konvertieren Sie 35 in die entsprechende Zahl 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

Anweisungen:

Dieser Algorithmus verwendet hauptsächlich zwei Funktionen, um zufällige Ganzzahlen zu generieren, wobei mt_rand ( int $min , int $max ) der Bereich von ASCII-Codes ist Bei Bedarf angepasst, z. B. ASCII-Codes. Das Bit $min – $max in der Tabelle entspricht 97 —— 122 und a – z entspricht dem englischen Buchstaben 65 —— 90. Weitere Informationen finden Sie in der ASCII-Codetabelle. A —— Z

<?phpfunction create_password($pw_length = 8) {
    $randpwd = &#39;&#39;;    for ($i = 0; $i < $pw_length; $i++) 
    {        $randpwd .= chr(mt_rand(33, 126));
    }    return $randpwd;
}// 调用该函数,传递长度参数$pw_length = 6echo create_password(6);
Methode 2

  1. Legen Sie eine Zeichenfolge vor

    , einschließlich $chars und einiger Sonderzeichen a – z,A – Z,0 – 9,

  2. Wählen Sie zufällig ein Zeichen aus der

    -Zeichenfolge $chars

  3. aus. Wiederholen Sie den zweiten Schritt n-mal, um ein Passwort der Länge n

<?php
function generate_password( $length = 8 ) {
    // 密码字符集,可任意添加你需要的字符    
    $chars = &#39;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_[]{}<>~`+=,.;:/?|&#39;;    
    $password = &#39;&#39;;
    for ( $i = 0; $i < $length; $i++ ) 
    {
        // 这里提供两种字符获取方式
        // 第一种是使用 substr 截取$chars中的任意一位字符;
        // 第二种是取字符数组 $chars 的任意元素
        // $password .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);        
        $password .= $chars[ mt_rand(0, strlen($chars) - 1) ];
    }

    return $password;
}
echo generate_password(6);
zu erhalten Methode 3

  1. Ein Zeichenarray voreinstellen

    , einschließlich $chars und einiger Sonderzeichen a – z,A – Z,0 – 9

  2. Verwenden Sie

    für eine zufällige Auswahl array_rand() Elemente $chars$length

  3. aus dem Array
  4. gemäß dem erhaltenen Schlüsselnamen-Array

    und die Zeichen, die Zeichen verbinden, aus dem Array $keys Zeichenfolge herausnehmen. Der Nachteil dieser Methode besteht darin, dass dieselben Zeichen nicht wiederholt abgerufen werden. $chars

<?phpfunction make_password( $length = 8 ) {
    // 密码字符集,可任意添加你需要的字符
    $chars = array(&#39;a&#39;, &#39;b&#39;, &#39;c&#39;, &#39;d&#39;, &#39;e&#39;, &#39;f&#39;, &#39;g&#39;, &#39;h&#39;, 
    &#39;i&#39;, &#39;j&#39;, &#39;k&#39;, &#39;l&#39;,&#39;m&#39;, &#39;n&#39;, &#39;o&#39;, &#39;p&#39;, &#39;q&#39;, &#39;r&#39;, &#39;s&#39;, 
    &#39;t&#39;, &#39;u&#39;, &#39;v&#39;, &#39;w&#39;, &#39;x&#39;, &#39;y&#39;,&#39;z&#39;, &#39;A&#39;, &#39;B&#39;, &#39;C&#39;, &#39;D&#39;, 
    &#39;E&#39;, &#39;F&#39;, &#39;G&#39;, &#39;H&#39;, &#39;I&#39;, &#39;J&#39;, &#39;K&#39;, &#39;L&#39;,&#39;M&#39;, &#39;N&#39;, &#39;O&#39;, 
    &#39;P&#39;, &#39;Q&#39;, &#39;R&#39;, &#39;S&#39;, &#39;T&#39;, &#39;U&#39;, &#39;V&#39;, &#39;W&#39;, &#39;X&#39;, &#39;Y&#39;,&#39;Z&#39;, 
    &#39;0&#39;, &#39;1&#39;, &#39;2&#39;, &#39;3&#39;, &#39;4&#39;, &#39;5&#39;, &#39;6&#39;, &#39;7&#39;, &#39;8&#39;, &#39;9&#39;, &#39;!&#39;, 
    &#39;@&#39;,&#39;#&#39;, &#39;$&#39;, &#39;%&#39;, &#39;^&#39;, &#39;&&#39;, &#39;*&#39;, &#39;(&#39;, &#39;)&#39;, &#39;-&#39;, &#39;_&#39;, 
    &#39;[&#39;, &#39;]&#39;, &#39;{&#39;, &#39;}&#39;, &#39;<&#39;, &#39;>&#39;, &#39;~&#39;, &#39;`&#39;, &#39;+&#39;, &#39;=&#39;, &#39;,&#39;, 
    &#39;.&#39;, &#39;;&#39;, &#39;:&#39;, &#39;/&#39;, &#39;?&#39;, &#39;|&#39;);    // 在 $chars 中随机取 $length 个数组元素键名
    $keys = array_rand($chars, $length); 

    $password = &#39;&#39;;    for($i = 0; $i < $length; $i++)
    {        // 将 $length 个数组元素连接成字符串
        $password .= $chars[$keys[$i]];
    }    return $password;
}echo make_password(6);
Methode 4

Verwenden Sie md5, um den aktuellen Zeitstempel zu verschlüsseln und einige Ziffern abzufangen. Das generierte Passwort enthält nur Buchstaben und Zahlen.

  1. time() Holen Sie sich den aktuellen Unix-Zeitstempel

  2. Verschlüsseln Sie den im ersten Schritt erhaltenen Zeitstempel mit md5()

  3. Verwenden Sie das Ergebnis des zweiten Schritts der Verschlüsselung, fangen Sie n Ziffern ab, um das gewünschte Passwort zu erhalten

<?phpfunction get_password( $length = 8 )  {
    $str = substr(md5(time()), 0, $length);    return $str;
}echo get_password(6);
Methode 5

str_shuffle – Zufällig eine Zeichenfolge verschlüsseln

<?phpfunction random_pass( $length = 8 ){
    $password = &#39;&#39;;    
    $chars = &#39;abcdefghijkmnpqrstuvwxyz23456789ABCDEFGHIJKMNPQRSTUVWXYZ&#39;; //去掉1跟字母l防混淆            
    if ($length > strlen($chars)) {//位数过长重复字符串一定次数
        $chars = str_repeat($chars, ceil($length / strlen($chars)));
    }    $chars = str_shuffle($chars);    
    $password = substr($chars, 0, $length);    
    return $password;
}echo random_pass(6);

Das obige ist der detaillierte Inhalt vonEine kurze Einführung, wie PHP zufällige Passwörter generiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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