在 PHP 中生成密码

简介: 在 PHP 中生成密码

[在 PHP 中使用 rand() 函数选择随机数组索引以生成随机密码]

我们可以使用 rand() 函数在 PHP 中生成一个随机密码。rand() 函数从提供的参数范围中返回一个随机整数。该函数采用两个整数值作为参数。我们可以定义一个由字母和数字组成的字符串,我们可以在其中组合密码。随机数索引数组以选择随机字母或数字。我们可以循环 rand() 函数来创建所需长度的密码。

例如,创建一个变量 $comb 并将包含所有小写和大写字母以及从 0 到 10 的数字的字符串存储为 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890。使用 array() 函数创建一个数组 $pass。将字符串 $comb 的长度存储在 $combLen 变量中。创建一个 for 循环并迭代循环八次。在循环内部,使用 rand() 函数和 0$combLen 变量作为参数,并将值存储在 $n 变量中。然后,将 $comb[$n] 分配给 $pass 数组。在循环外,使用 implode() 函数将数组转换为字符串。

在下面的示例中,我们从存储在 $comb 变量中的组合生成一个随机密码。rand() 函数选取一个从 0 到字符串 $comb 长度的随机整数。随机整数用作从组合中选取随机字母数字值的索引。循环运行八次并选择八个随机字母数字值,最后形成一个随机密码。查看 PHP 手册 以了解有关 rand() 函数的更多信息。

示例代码:

# php 7.x
<?php
 $comb = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
 $pass = array(); 
 $combLen = strlen($comb) - 1; 
 for ($i = 0; $i < 8; $i++) {
     $n = rand(0, $combLen);
     $pass[] = $comb[$n];
 }
 print(implode($pass)); 
?>

输出:

aPsQWlzh

[在 PHP 中使用 openssl_random_pseudo_bytes()bin2hex() 函数生成随机密码]

我们可以使用 openssl_random_pseudo_bytes() 函数来生成一个伪随机字节串。我们可以指定一个整数值作为函数的参数来定义要生成的所需字节数的长度。bin2hex() 函数将二进制数据转换为十六进制表示。我们可以使用该函数将随机生成的字节串转换为十六进制表示形式并形成密码。此方法生成由字母数字值组成的随机密码。

例如,创建一个变量 $bytes 并为其分配函数 openssl_random_pseudo_bytes()。指定 4 作为函数的参数。创建另一个变量 $pass,并将函数 bin2hex() 写入其中。在函数中指定 $bytes 变量。使用 echo 语句打印 $pass 变量。

在下面的示例中,openssl_random_pseudo_bytes() 函数中的 4 表示要随机生成的字节数。bin2hex() 函数将字节转换为等效的十六进制数。随机生成的密码长度为 8,因为 4 字节字符串的十六进制转换结果为 8。查看 PHP 手册 以了解有关 bin2hex() 函数的更多信息。

示例代码:

#php 7.x
<?php
$bytes = openssl_random_pseudo_bytes(4);
$pass = bin2hex($bytes);
echo $pass;
?>

输出:

ed203eef

[使用 substr()str_shuffle() 函数从 PHP 中的给定字母数字字符串生成随机密码]

我们可以使用 str_shuffle() 方法随机打乱给定的字符串。该函数将小写和大写字母组合的字符串以及从 0 到 9 的数字打乱。因此,它形成了所有可能情况的一种排列。我们可以使用 substr() 函数处理混洗后的字符串以选择其字符的一部分。因此,我们可以生成一个随机密码。

例如,创建一个变量 $comb 并在其中存储字符串值 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789。使用 str_shuffle()$comb 变量进行混洗并将其存储在 $shfl 变量中。然后,使用 substr() 函数和 $shfl 变量、08 作为参数。将函数存储在 $pwd 变量中并打印该变量。

在下面的示例中,我们使用与第一种方法相同的一组字母数字值。随机生成的密码由这些字母数字值组成。str_shuffle() 函数将字母数字值打乱并创建随机排列。我们在 substr() 函数中使用了 08 来从无序排列的第一个索引中选择八个字符。因此,它会生成一个八位数的随机密码。

代码示例:

#php 7.x
<?php
$comb = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$shfl = str_shuffle($comb);
$pwd = substr($shfl,0,8);
echo $pwd;
?>

输出:

jenZq3lY
相关文章
|
6月前
|
PHP 数据安全/隐私保护
PHP页面如何实现设置独立访问密码
PHP网页如果需要查看信息必须输入密码,验证后才可显示出内容的代码如何实现? 对某些php页面设置单独的访问密码,如果密码不正确则无法查看内容,相当于对页面进行了一个加密
53 2
PHP页面如何实现设置独立访问密码
|
PHP 数据库 数据安全/隐私保护
PHP写用户注册、登录和密码重置功能
PHP写用户注册、登录和密码重置功能
122 0
|
6月前
|
PHP 数据安全/隐私保护
|
11月前
|
前端开发 PHP 数据安全/隐私保护
【PHP学习】—利用ajax原理实现密码修改功能(九)
【PHP学习】—利用ajax原理实现密码修改功能(九)
|
存储 算法 前端开发
php动态密码和加密解密函数的使用(动态密码、Discuz核心函数AuthCode、任意输入密码验证)
php动态密码和加密解密函数的使用(动态密码、Discuz核心函数AuthCode、任意输入密码验证)
248 0
php动态密码和加密解密函数的使用(动态密码、Discuz核心函数AuthCode、任意输入密码验证)
|
存储 算法 安全
PHP 中的密码哈希
PHP 中的密码哈希
|
存储 PHP 数据安全/隐私保护
password_hash密码加密与验证[PHP技术分享]
<?php // password_hash密码加密与验证[PHP技术分享] header("Content-Type:text/html;charset=utf-8"); /**  * 正确的密码是secret-password  * $passwordHash 是hash 后存储的密码  * password_verify()用于将用户输入的密码和数据库存储的密码比对。
1852 0
|
关系型数据库 MySQL 网络安全