php中生成随机密码的几种简单方法

一个新手
发布: 2017-09-06 16:10:46
原创
1552人浏览过

使用php开发应用程序,尤其是网站程序,常常需要生成随机密码,如用户注册生成随机密码,用户重置密码也需要生成一个随机的密码。随机密码也就是一串固定长度的字符串,这里我收集整理了几种生成随机字符串的方法,以供大家参考。

方法一

  1. 在 33 – 126 中生成一个随机整数,如 35,

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

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

说明:

立即学习PHP免费学习笔记(深入)”;

该算法主要用到了两个函数,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 = '';    
    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 的密码

    Find JSON Path Online
    Find JSON Path Online

    Easily find JSON paths within JSON objects using our intuitive Json Path Finder

    Find JSON Path Online 193
    查看详情 Find JSON Path Online
<?php
    function generate_password( $length = 8 ) {
    // 密码字符集,可任意添加你需要的字符    
    $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_[]{}<>~`+=,.;:/?|';    
    $password = '';
    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 取出字符拼接字符串。该方法的缺点是相同的字符不会重复取。

<?php
    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; $i < $length; $i++)
    {        // 将 $length 个数组元素连接成字符串
        $password .= $chars[$keys[$i]];
    }    
    return $password;
}
    echo make_password(6);
登录后复制

方法四

利用md5加密当前时间戳的方式,截取部分几位。生成的密码只包括字母和数字。

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

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

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

<?php
    function get_password( $length = 8 )  {
    $str = substr(md5(time()), 0, $length);    
    return $str;
}    
    echo get_password(6);
登录后复制

方法五

str_shuffle — 随机打乱一个字符串

<?php
    function random_pass( $length = 8 ){
    $password = '';    
    $chars = 'abcdefghijkmnpqrstuvwxyz23456789ABCDEFGHIJKMNPQRSTUVWXYZ'; //去掉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);
登录后复制

以上就是php中生成随机密码的几种简单方法的详细内容,更多请关注php中文网其它相关文章!

相关标签:
php
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号