>백엔드 개발 >PHP 튜토리얼 >PHP가 임의의 비밀번호를 생성하는 방법에 대한 간략한 소개

PHP가 임의의 비밀번호를 생성하는 방법에 대한 간략한 소개

黄舟
黄舟원래의
2017-08-10 11:43:281240검색


PHP를 사용하여 애플리케이션, 특히 웹사이트 프로그램을 개발할 때 임의의 비밀번호를 생성해야 하는 경우가 많습니다. 예를 들어 사용자 등록을 위해 임의의 비밀번호가 생성되고 사용자 비밀번호 재설정에도 임의의 비밀번호가 필요합니다. 임의의 비밀번호는 고정된 길이의 문자열입니다. 여기에서는 참조용으로 임의의 문자열을 생성하는 여러 가지 방법을 수집했습니다.

방법 1

  1. 35,

  2. 35를 #

  3. 에 해당하는 35와 같은 해당 ASCII 코드 문자로 변환합니다. 위의 1, 2를 반복합니다. n번 단계, n자리 비밀번호로 연결

설명:

이 알고리즘은 주로 두 가지 함수를 사용합니다. mt_rand (int $min, int $max) 함수는 임의의 정수를 생성하는 데 사용됩니다. , 여기서 $min – $max는 ASCII 코드의 범위입니다. 여기서는 33-126을 사용합니다. 예를 들어 ASCII 코드 표에서 97 – 122a – z에 해당하고, 65 – 90A – Z의 영문자에 해당합니다. ASCII 코드 테이블에. mt_rand ( int $min , int $max )函数用于生成随机整数,其中 $min – $max 为 ASCII 码的范围,这里取 33 -126 ,可以根据需要调整范围,如ASCII码表中 97 —— 122 位对应 a – z65 —— 90 对应A —— Z的英文字母,具体可参考ASCII 码表。

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

方法二

  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

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

    방법 2

a – z, A – Z, 0 – 9, 및 일부 특수 문자

  1. 를 포함하여 문자열 $chars를 사전 설정합니다. $chars 문자열에서 무작위로 문자 선택

  2. 두 번째 단계를 n번 반복하여 길이가 n

  3. <?phpfunction get_password( $length = 8 )  {
        $str = substr(md5(time()), 0, $length);    return $str;
    }echo get_password(6);
  4. 방법 3

문자 배열을 미리 설정합니다. $chars(a – z, A – Z, 0 – 9 및 일부 특수 문자

~ array_rand() 포함) 무작위로 획득한 키 이름 배열 $keys를 기반으로 $chars 배열에서 $length 요소
🎜🎜를 선택하고, $chars를 배열하고 문자열을 연결합니다. 이 방법의 단점은 동일한 문자를 반복해서 검색할 수 없다는 것입니다. 🎜🎜🎜
<?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);
🎜방법 4🎜🎜md5를 사용하여 현재 타임스탬프를 암호화하고 일부 숫자를 가로챕니다. 생성된 비밀번호에는 문자와 숫자만 포함됩니다. 🎜🎜🎜🎜time() 현재 Unix 타임스탬프 가져오기 🎜🎜🎜🎜 첫 번째 단계에서 얻은 타임스탬프를 md5()로 암호화합니다. 🎜🎜🎜🎜 두 번째 단계에서 암호화된 결과를 사용하고 n 비트를 가로채서 원하는 것을 얻습니다. 🎜🎜🎜rrreee🎜방법 5🎜🎜str_shuffle — 문자열을 무작위로 섞습니다🎜rrreee🎜🎜

위 내용은 PHP가 임의의 비밀번호를 생성하는 방법에 대한 간략한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.