php生成随机字符串的四种方法(普通的随机字符串以及具有唯一性的字符串)
来源:互联网 发布:查看本机端口是否打开 编辑:程序博客网 时间:2024/05/18 00:45
<?php//生成随机的字符串function createNonceStr($length = 16){ $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; $str = ""; for ($i = 0; $i < $length; $i++) { $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1); } return $str;}/*注册的时候生成自己的邀请码--具有唯一性$uid 用户ID$reg_time 注册时间*/function make_invite_code($uid, $reg_time){ $chars = '0123456789abcdefghjkmnpqrstuvwxyz'; $len = strlen($chars); $uidLen = strlen($uid); $random = intval(strrev($reg_time) . ($uidLen > 3 ? substr($uid, $uidLen - 3) : $uid)); $outs = array(); while ($random > 0) { $result = $random % $len; $outs[] = $chars[$result]; $random = ($random - $result) / $len; } return join('', $outs);}
方法一:
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 转换成对应的字符。
function create_password($pw_length = 8) { $randpwd = ''; for ($i = 0; $i < $pw_length; $i++) { $randpwd .= chr(mt_rand(33, 126)); } return $randpwd; } // 调用该函数,传递长度参数$pw_length = 6 echo create_password(6);
方法二:
1、预置一个的字符串 $chars ,包括 a – z,A – Z,0 – 9,以及一些特殊字符
2、在 $chars 字符串中随机取一个字符
3、重复第二步 n 次,可得长度为 n 的密码
方法三:
1、预置一个的字符数组 $chars ,包括 a – z,A – Z,0 – 9,以及一些特殊字符
2、通过array_rand()从数组
3、根据已获取的键名数组
方法四:
算法简单,代码简短,只是因为md5()函数的返回值的缘故,生成的密码只包括字母和数字,不过也算是一个不错的方法。算法思想:
1、time() 获取当前的 Unix 时间戳
2、将第一步获取的时间戳进行 md5() 加密
3、将第二步加密的结果,截取 n 位即得想要的密码
function get_password( $length = 8 ) { $str = substr(md5(time()), 0, 6); return $str; }
效率对比:
方法一和方法二的执行时间都差不多,
方法四运行时间最短,
而方法三的运行时间稍微长点。
阅读全文
0 0
- php生成随机字符串的四种方法(普通的随机字符串以及具有唯一性的字符串)
- php 中生成随机字符串的方法
- PHP生成随机字符串的方法
- PHP生成随机字符串的方法
- php 生成随机字符串的方法
- 生成随机字符串的方法
- 随机字符串的生成
- 字符串的随机生成
- 日期的格式化以及随机生成字符串
- PHP 生成任意长度的随机字符串
- php生成指定位数的随机字符串
- 简单的生成随机字符串的方法
- PHP开发程序:生成随机字符串的方法
- java中随机生成字符串的方法(三种)
- java生成类似token的唯一随机字符串
- PHP生成随机或者唯一字符串
- PHP生成随机字符串方法
- 生成随机字符串的代码
- systemID与RouteID转换
- 浅谈词嵌入(word embedding)
- MVC架构模式在Tkinter中的运用
- JwtHelper生成token
- QT 之 .pro 文件配置解析
- php生成随机字符串的四种方法(普通的随机字符串以及具有唯一性的字符串)
- TensorFlow学习:安装和使用
- Kindle paperwhite 连不上wifi(校园网、360随身wifi)
- java中解决list集合里对象重复问题
- .net 服务器 HttpRespond.Response.Redirect重定向问题理解
- AngularJS表格数据全选反选批量删除,删除的数据添加到数组里
- java复制文件
- QString与TCHAR/wchar_t/LPWSTR之间的类型转换
- AJAX 单页面应用的两种实现思路