利用PHP实现生成随机密码的方法有哪些

  介绍

利用PHP实现生成随机密码的方法有哪些?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

方法一:

1,在33 - 126中生成一个随机整数,如35岁的

2,将35转换成对应的ASCII码字符,如35对应#

3,重复以上1、2步骤n次,连接成n位的密码

该算法主要用到了两个函数,mt_rand (int分钟美元,int马克斯美元)函数用于生成随机整数,其中min - max美元为ASCII码的范围,这里取33 -126,可以根据需要调整范围,如ASCII码表中97 - 122位对应a - z的英文字母,具体可参考ASCII码表;装备(int ASCII美元)函数用于将对应整数美元ASCII转换成对应的字符。

函数create_password ($ pw_length=8)
{
$ randpwd=& # 39; & # 39;;
($ i=0;美元我& lt;pw_length美元;$我+ +)
{
randpwd美元。=科(mt_rand (126));
}
返回randpwd美元;
},
//调用该函数,传递长度参数美元pw_length=6
回声create_password (6);

方法二:

1,预置一个的字符串字符美元,包括a - z、a - z, 0 - 9,以及一些特殊字符

2,在$字符字符串中随机取一个字符

3,重复第二步n次,可得长度为n的密码

函数generate_password(长度=8美元){
//密码字符集,可任意添加你需要的字符
$字符=& # 39;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ! @ # $ % ^, * () _ [] {} & lt;祝辞~”+=,。/? | & # 39;,,
$密码=& # 39;& # 39;;
($ i=0;美元我& lt;美元的长度;$i++ )
{
//这里提供两种字符获取方式
//第一种是使用 substr 截取$chars中的任意一位字符;
//第二种是取字符数组 $chars 的任意元素
//$password .=substr($chars, mt_rand(0, strlen($chars) - 1), 1);
$password .=$chars[ mt_rand(0, strlen($chars) - 1) ];
}
return $password;
}

方法三:

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

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

3、根据已获取的键名数组 $keys,从数组 $chars 取出字符拼接字符串。该方法的缺点是相同的字符不会重复取。

function make_password( $length=8 )
{
//密码字符集,可任意添加你需要的字符
$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', '!',
'@','#', '$', '%', '^', '&', '*', '(', ')', '-', '_',
'[', ']', '{', '}', '<', '>', '~', '`', '+', '=', ',',
'.', ';', ':', '/', '?', '|');
//在 $chars 中随机取 $length 个数组元素键名
$keys=array_rand($chars, $length); 
$password='';
for($i=0; 美元我& lt;美元的长度;$我+ +)
{
//美元将长度个数组元素连接成字符串
密码。美元=$字符[键[$ i]]美元;
},
返回$密码;
}

方法四:

本方法是本文被蓝色理想转载后,一名网友提供的一个新方法,算法简单,代码简短,只是因为md5()函数的返回值的缘,故生成的密码只包括字母和数字,不过也算是一个不错的方法。算法思想:

1,时间()获取当前的Unix时间戳

2,将第一步获取的时间戳进行md5()加密

3,将第二步加密的结果,截取n位即得想要的密码

函数get_password(长度=8美元)
{
$ str=substr (md5 (()), 0, 6);
返回str美元;
}

<强>时间效率对比

我们使用以下PHP代码,计算上面的4个随机密码生成函数生成6位密码的运行时间,进而对他们的时间效率进行一个简单的对比。

& lt; PHP ?   function  getmicrotime ()   {   列表(sec)美元购买美元,,,=,爆炸(,,,,());   return ((浮动)usec 美元;+,sec)美元(浮动);   }//,记录开始时间   time_start 美元;=,getmicrotime (),,//,这里放要执行PHP的代码,如://,echo  create_password (6),,//,记录结束时间   $ time_end =, getmicrotime ();   $ time =, time_end 美元;作用;time_start美元;//,输出运行总时间   echo “执行时间,time 美元;seconds";   祝辞;

利用PHP实现生成随机密码的方法有哪些