Code前端首页关于Code前端联系我们

PHP开发网站应用中两种生成随机字符串的方法及时间效率比较

terry 2年前 (2023-09-25) 阅读数 46 #后端开发

PHP开发应用,尤其是网站应用,经常需要生成随机密码。例如,用户注册时会生成随机密码,重置密码时用户也必须生成密码。随机密码。随机密码是一个固定长度的字符串。这里我收集了几种生成随机字符串的方法供大家参考。

方法1:

1。生成 33 – 126 之间的随机整数,例如 35、

2。将 35 转换为相应的 ASCII 字符,例如 35 对应#

3。重复1.2步骤n次,拼凑成n位密码

该算法主要用到两个函数。函数 mt_rand(int $min, int $max) 用于生成随机整数,其中 $min – $max 是 ASCII 码的范围,这里是 33-126,范围可以根据需要调整。例如,ASCII码表中的第97-122位对应于英文字母a-z。详细信息参见ASCII码表; chr(int $ascii)函数用于将对应的整数$ascii转换为对应的字符。

函数 create_password($pw_length = 8)
{
$randpwd = '';
for ($i = 0; $i { $randpwd . = chr(mt_rand(33, 126));
}
return $randpwd;
}

//调用此函数并传递长度参数 $pw_length = 6 create_password(6);
方法2:

1。预设一串$字符,包括a – z、A – Z、0 – 9,以及一些特殊字符

2。从 $chars 字符串

3 中随机选择一个字符。重复第二步n次,得到长度为n的密码

functiongenerate_password( $length = 8 ) {
// 密码字符集,可以添加任何你需要的字符
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_ []{}~+=,.;:/?|';

$password = ''; i = 0; $i {
// 获取字符有两种方法
// 第一种是使用 substr 截取 $chars 中的任意字符 ;
// 第二种方法是取任意char 数组的元素 $chars
// $password .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
$password .= $ chars[ mt_rand(0 , strlen($chars) - 1) ];
}

return $password;
}
functiongenerate_password( $length = 8 ) {
//密码字符集,你可以添加任何您需要的字符
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_= ]{}:+/? |';

$passwor d = '';
for ( $i = 0; $i {
// 这里给出了两种 有两种方法获取字符
// 第一种是使用 substr 截断 $chars 中的任意字符;
// 第二个是获取 char 数组的任意元素 $chars
// $passwor d .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
$password .= $chars[ mt_rand(0, strlen($chars) - 1) ];
}

返回 $password;
}

函数 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'、'!'、
'@'、'#'、'$'、'%'、'^'、'&' , '*', '(', ')', '-', '_',
'[', ']', '{', '}', '', '~ ', '`', '+', '=', ',',
'.', ';', ':', '/', '?', '|');

/ / i 从 $chars 中随机选择 $length 数组元素键名
$keys = ($chars, $length);

$passwor d = '';
for($i = 0; $i {
// 将 $length 数组元素合并为字符串
$password .= $chars[$keys[$i]];
}

return $ password ;
}
时间效率比较

我们使用以下PHP代码来计算上述三个随机密码生成函数生成6位密码的运行时间,然后评估它们的时间效率做一个简单的比较。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门