php 生成随机密码

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

方法一:
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 的密码

function generate_password( $length = 8 ) {
  // 密码字符集,可任意添加你需要的字符
  $chars = ‘[email protected]#$%^&*()-_ []{}<>~`+=,.;:/?|‘;
  $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;
}
方法三:
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; $i < $length; $i++)
  {
    // 将 $length 个数组元素连接成字符串
    $password .= $chars[$keys[$i]];
  }
  return $password;
}
时间效率对比
我们使用以下PHP代码,对 3 个随机密码生成函数生成 6 位密码的运行时间,进而对他们的时间效率进行一个简单的对比。

function getmicrotime()
{
  list($usec, $sec) = explode(" ",microtime());
  return ((float)$usec + (float)$sec);
}

// 记录开始时间
$time_start = getmicrotime();

// 这里放要执行的PHP代码,如:
// echo create_password(6);

// 记录结束时间
$time_end = getmicrotime();
$time = $time_end - $time_start;
// 输出运行总时间
echo "执行时间 $time seconds";
最终得出的结果是:
方法一:9.8943710327148E-5 秒
方法二:9.6797943115234E-5 秒
方法三:0.00017499923706055 秒

可以看出方法一和方法二的执行时间都差不多,而方法三的运行时间稍微短了点

No related posts.

时间: 2024-10-03 01:05:05

php 生成随机密码的相关文章

Linux 命令行生成随机密码的十种方法

Linux操作系统的一大优点是对于同样一件事情,你可以使用高达数百种方法来实现它.例如,你可以通过数十种方法来生成随机密码.本文将介绍生成随机密码的十种方法.这些方法均收集于Command-Line Fu,并且在我们自己的Linux PC机上测试过.这十种方法的一些在安装了Cygwin的Windows下也是可以运行的,特别是最后一种方法. 生成一个随机密码 对于下面的任何一种方法,你可以通过简单的修改来生成特定长度的密码,或者只使用其输出结果的前N位.希望你正在使用一些类似于LastPass的密

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

文章来源:PHP开发学习门户 地址:http://www.phpthinking.com/archives/523 使用PHP开发应用程序,尤其是网站程序,常常需要生成随机密码,如用户注册生成随机密码,用户重置密码也需要生成一个随机的密码.随机密码也就是一串固定长度的字符串,这里我收集整理了几种生成随机字符串的方法,以供大家参考. 方法一: 1.在 33 – 126 中生成一个随机整数,如 35, 2.将 35 转换成对应的ASCII码字符,如 35 对应 # 3.重复以上 1.2 步骤 n 次

【Python运维脚本】生成随机密码

需求:生成指定长度的随机密码,其中密码中应该包含数字和英文字母 实现: #!/usr/bin/env python # -*- coding=utf-8 -*- #Using GPL v2.7 #Author: [email protected] import random, string#导入random和string模块 def GenPassword(length): #随机出数字的个数 numOfNum = random.randint(1,length-1) numOfLetter =

生成随机密码和邮箱、手机匹配

package com.alibaba.uyuni.common.util; import java.util.Random; public class GeneratePassword {     /**      * 生成随机密码      * @param pwd_len      * 生成的密码的总长度      * @return 密码的字符串      */     public static String genRandomNum(int pwd_len) {         //

php生成随机密码(php自定义函数)转自先锋教程网

php生成随机密码(php自定义函数) 时间:2015-12-16 20:43:49来源:网络 导读:php随机密码的生成代码,使用php自定义函数生成指定长度的随机密码,密码规则为小写字母与数字的随机字符串,长度可自定义. 生成一个随机密码的函数,生成密码为小写字母与数字的随机字符串,长度可自定义. 复制代码代码如下: <?php/* * php自动生成新密码自定义函数(带实例演示)      适用环境: PHP5.2.x  / mysql 5.0.x       代码作者: xujiajay

python 生成随机密码

python生成随机密码串 python 的random模块可以生成随机数,主要用这个生成随机密码. string模块中的3个函数:string.letters,string.printable,string.printable >>> import string >>> string.letters 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' >>> string.digits '01

LotusScript生成随机密码(数字、字母、特殊字符组合)

 [背景] 近期OA系统要进行安全检查,由于未做密码策略,很多用户仍然使用的是初始化密码,需要在后台批量修改为强密码(数字.小写字母.大写字母.特殊字符的组合),在网上参考了其他平台强密码的生成思路,特编写了Lotusscript下生成强密码的脚本. [参考代码] %REM Library createRandomPasswd Created 2014-9-22 by admin/cht Description: Comments for Library %END REM Option Pu

linux生成随机密码

通常情况下大家生成密码都好困惑,一来复杂程度不够会不安全,复杂程度够了又不能手动随便敲击键盘打出一同字符(但通常情况下这些字符是有规律的), 使用1password 或者 keepass 这种软件生成也可以,不过貌似1password 要收费,既然这样我们就玩一下好玩的用 linux 来生成随机密码玩玩吧; Linux操作系统的一大优点是对于同样一件事情,你可以使用高达数百种方法来实现它. 例如,你可以通过数十种方法来生成随机密码.本文将介绍生成随机密码的十种方法. 1. 使用SHA算法来加密日

【VBA研究】生成随机密码

作者:iamlaosong 很简单的一个功能,网上也有很多在线生成器,也有小工具可以下载,这儿用VBA做一个,结果就保存到当前工作表中,简单.快速.生成函数也可以放到其它程序中使用.函数实现的流程是:用一个变量保存所有用到的字符,然后根据级别取不同的子串,最后产生随机数,从子串中取出字符合并出随机密码.程序如下: '生成密码并保存到当前工作表中 Sub GetPassword() len1 = Cells(2, 3) lev1 = Cells(2, 4) num1 = Cells(2, 5) m