search
HomeBackend DevelopmentPHP Tutorialphp生成随机密码的三种步骤

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 秒

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


Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
如何解决 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 rand函数生成相同随机数怎么解决php rand函数生成相同随机数怎么解决Mar 23, 2023 am 09:17 AM

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

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

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

unicode和ascii有哪些区别unicode和ascii有哪些区别Sep 06, 2023 am 11:56 AM

unicode和ascii的区别包括编码范围不同、存储空间不同和兼容性不同等。详细介绍:1、编码范围不同,ascii的编码范围是0-127,主要用于表示英语字母,而unicode的编码范围广阔得多,可以表示几乎所有的语言字符;2、存储空间不同,ascii通常使用1个字节来存储一个字符,而unicode可能使用2个或更多的字节来存储一个字符;3、兼容性不同等等。

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
1 months agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

EditPlus Chinese cracked version

EditPlus Chinese cracked version

Small size, syntax highlighting, does not support code prompt function

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

mPDF

mPDF

mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),