首页 后端开发 php教程 php生成随机密码的三种步骤

php生成随机密码的三种步骤

Jun 13, 2016 am 11:52 AM
ascii length rand

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 <span style="font-family:Microsoft YaHei; font-size:12px"><br><strong>方法二:</strong><br>1、预置一个的字符串 $chars ,包括 a – z,A – Z,0 – 9,以及一些特殊字符<br>2、在 $chars 字符串中随机取一个字符<br>3、重复第二步 n 次,可得长度为 n 的密码</span><br><pre code_snippet_id="250199" snippet_file_name="blog_20140322_2_4979244" name="code" class="php">function generate_password( $length = 8 ) {        // 密码字符集,可任意添加你需要的字符        $chars = [email protected]#$%^&*()-_ []{}~`+=,.;:/?|';        $password = '';        for ( $i = 0; $i <br><span style="font-family:Microsoft YaHei; font-size:12px"><strong>方法三:</strong><br>1、预置一个的字符数组 $chars ,包括 a – z,A – Z,0 – 9,以及一些特殊字符<br>2、通过array_rand()从数组 $chars 中随机选出 $length 个元素<br>3、根据已获取的键名数组 $keys,从数组 $chars 取出字符拼接字符串。该方法的缺点是相同的字符不会重复取。</span><br><pre code_snippet_id="250199" snippet_file_name="blog_20140322_3_8043123" name="code" class="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 <br><span style="font-family:Microsoft YaHei; font-size:12px"><strong>时间效率对比</strong><br>我们使用以下PHP代码,计算上面的 3 个随机密码生成函数生成 6 位密码的运行时间,进而对他们的时间效率进行一个简单的对比。</span><br><pre code_snippet_id="250199" snippet_file_name="blog_20140322_4_6123513" name="code" class="php"><?phpfunction 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 秒

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


本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何解决 golang 中的 “undefined: rand.Seed” 错误? 如何解决 golang 中的 “undefined: rand.Seed” 错误? Jun 25, 2023 am 08:34 AM

在使用Golang进行开发或学习过程中,我们可能会遇到undefined:rand.Seed的错误提示。这个错误通常会在需要使用随机数生成器时出现,因为在Golang中需要先设置一个随机数种子,才能使用rand包中的函数。本篇文章将介绍如何解决这种错误。1.引入math/rand包首先,我们需要在代码中引入math/rand包。在

一个ascii字符占几个字节 一个ascii字符占几个字节 Mar 09, 2023 pm 03:49 PM

一个ascii字符占1个字节。ASCII码字符在计算机中采用7位或8位二进制编码表示,并保存在一个字节中,即一个ASCII码占用一个字节。ASCII码可分为标准ASCII码和扩展ASCII码,其中标准ASCII码也叫基础ASCII码,使用7位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0到9、标点符号,以及在美式英语中使用的特殊控制字符。

快速了解 PHP 中的 ASCII 数值转换 快速了解 PHP 中的 ASCII 数值转换 Mar 28, 2024 pm 06:42 PM

PHP中的ASCII数值转换是编程中经常会遇到的问题。ASCII(AmericanStandardCodeforInformationInterchange)是一种用于将字符转换为数字的标准编码系统。在PHP中,我们经常需要通过ASCII码来实现字符和数字之间的转换。本文将介绍如何在PHP中进行ASCII数值转换,并给出具体的代码示例。一、将字符

使用java的String.length()函数获取字符串的长度 使用java的String.length()函数获取字符串的长度 Jul 25, 2023 am 09:09 AM

使用Java的String.length()函数获取字符串的长度在Java编程中,字符串是一种非常常见的数据类型,我们经常需要获取字符串的长度,即字符串中字符的个数。在Java中,我们可以使用String类的length()函数来获取字符串的长度。下面是一个简单的示例代码:publicclassStringLengthExample{publ

如何在 Golang 并行处理中同步随机数生成? 如何在 Golang 并行处理中同步随机数生成? Jun 03, 2024 pm 02:53 PM

在Go并发编程中同步随机数生成:使用互斥锁(sync.Mutex)控制对rand.Rand随机数生成器的访问。每个goroutine在生成随机数前获取互斥锁,并在生成后释放互斥锁。这确保了同一时间只有一个goroutine可以访问随机数生成器,消除了数据争用。

PHP返回字符串第一个字符的 ASCII 值 PHP返回字符串第一个字符的 ASCII 值 Mar 21, 2024 am 11:01 AM

这篇文章将为大家详细讲解有关PHP返回字符串第一个字符的ASCII值,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP返回字符串第一个字符的ASCII值引言在php中,获取字符串第一个字符的ASCII值是一个常见的操作,涉及到字符串处理和字符编码基础知识。ASCII值用于表示字符在计算机系统中的数字值,对于字符比较、数据传输和存储至关重要。过程获取字符串第一个字符的ASCII值涉及以下步骤:获取字符串:确定要获取ASCII值的字符串。它可以是变量、字符串常量

php rand函数生成相同随机数怎么解决 php rand函数生成相同随机数怎么解决 Mar 23, 2023 am 09:17 AM

rand()函数在每次调用时使用相同的初始种子(seeds)。预设的初始种子是从操作系统的时间获得的,但是它只有微秒级的精度。也就是说,在极短的时间内,许多rand()函数调用都将使用相同的初始种子,从而导致相同的随机数生成。那么,如何解决这个问题呢?

length函数用法介绍 length函数用法介绍 Sep 19, 2023 am 11:41 AM

length函数用于返回指定字符串的字符数或字节数。可以用于计算字符串的长度,以便在查询和处理字符串数据时进行操作和判断。 需要注意的是length函数计算的是字符串的字符数,而不是字节数。对于多字节字符集,一个字符可能由多个字节组成。因此,length函数在计算字符串长度时会将多字节字符作为一个字符来计算。

See all articles