ホームページ  >  記事  >  バックエンド開発  >  PHPでランダムなパスワードを生成するいくつかの簡単な方法

PHPでランダムなパスワードを生成するいくつかの簡単な方法

一个新手
一个新手オリジナル
2017-09-06 16:10:461295ブラウズ

PHP を使用してアプリケーション、特に Web サイトのプログラムを開発すると、多くの場合、ランダムなパスワードを生成する必要があります。たとえば、ユーザー登録用にランダムなパスワードが生成され、ユーザーのリセット用のパスワードにもランダムなパスワードが必要になります。ランダムなパスワードは固定長の文字列です。ここでは、参考のためにランダムな文字列を生成するいくつかの方法を集めました。

方法1

  1. 35、などの33〜126のランダムな整数を生成します

  2. 35を対応するASCIIコード文字に変換します(#

  3. #

に対応する35など)上記の1、2を繰り返しますn 回ステップし、n 桁のパスワードに連結します

mt_rand ( int $min , int $max )函数用于生成随机整数,其中 $min – $max 为 ASCII 码的范围,这里取 33 -126 ,可以根据需要调整范围,如ASCII码表中 97 —— 122 位对应 a – z65 —— 90 对应A —— Z的英文字母,具体可参考ASCII 码表。

<?php
    function 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);

方法二

  1. 预置一个的字符串 $chars ,包括 a – z,A – Z,0 – 9,以及一些特殊字符

  2. $chars 字符串中随机取一个字符

  3. 重复第二步 n 次,可得长度为 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);

方法三

  1. 预置一个的字符数组 $chars ,包括 a – z,A – Z,0 – 9,以及一些特殊字符

  2. 通过array_rand()从数组 $chars 中随机选出 $length 个元素

  3. 根据已获取的键名数组 $keys,从数组 $chars

    説明:
このアルゴリズムは主に 2 つの関数を使用します。mt_rand (int $min, int $max) 関数は、ランダムな整数を生成するために使用されます。ここで、$min – $max は ASCII コードの範囲です。たとえば、ASCII コード テーブルでは、97 – の範囲を調整できます。 122a ~ z に対応し、65 ~ 90A ~ Z の英字に対応します。 ASCIIコードテーブルへ。

<?php
    function 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);

方法 2

  1. a – z、A – Z、0 – 9、 およびいくつかの特殊文字を含む文字列 $chars をプリセットします

  2. $chars 文字列からランダムに文字を選択します

  3. 2 番目のステップを n 回繰り返して、長さ n のパスワードを取得します

  4. <?php
        function get_password( $length = 8 )  {
        $str = substr(md5(time()), 0, $length);    
        return $str;
    }    
        echo get_password(6);
方法 3

文字配列を事前に設定します$chars (a – z、A – Z、0 – 9 を含む)、および一部の特殊文字 🎜🎜🎜🎜 から array_rand() までランダム取得したキー名配列 $keys に基づいて、配列 $chars から $length 要素 🎜🎜🎜🎜 を選択し、配列から文字を取り出します配列 $chars を作成し、文字列を連結します。この方法の欠点は、同じ文字が繰り返し取得されないことです。 🎜🎜🎜
<?php
    function 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);
🎜方法 4🎜🎜 md5 を使用して現在のタイムスタンプを暗号化し、一部の数字を傍受します。生成されたパスワードには文字と数字のみが含まれます。 🎜🎜🎜🎜time() 現在の Unix タイムスタンプを取得します 🎜🎜🎜🎜 最初のステップで取得したタイムスタンプを md5() で暗号化します 🎜🎜🎜🎜 2 番目のステップで暗号化された結果を使用し、n ビットをインターセプトして必要なものを取得します パスワード🎜🎜🎜rrreee🎜メソッド5🎜🎜str_shuffle — 文字列をランダムにシャッフルします🎜rrreee

以上がPHPでランダムなパスワードを生成するいくつかの簡単な方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。