我们将介绍一种使用 rand()
函数在 PHP 中生成随机密码的方法。此方法使用大小写字母和数字的组合来形成密码。rand()
函数返回随机整数,即数组索引,以选择密码组合。
我们还将介绍另一种使用 openssl_random_pseudo_bytes()
和 bin2hex()
函数在 PHP 中生成随机密码的方法。
本文将演示另一种使用 substr()
和 str_shuffle()
函数在 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 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
变量、0
和 8
作为参数。将函数存储在 $pwd
变量中并打印该变量。
在下面的示例中,我们使用与第一种方法相同的一组字母数字值。随机生成的密码由这些字母数字值组成。str_shuffle()
函数将字母数字值打乱并创建随机排列。我们在 substr()
函数中使用了 0
和 8
来从无序排列的第一个索引中选择八个字符。因此,它会生成一个八位数的随机密码。
代码示例:
#php 7.x
<?php
$comb = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$shfl = str_shuffle($comb);
$pwd = substr($shfl,0,8);
echo $pwd;
?>
输出:
jenZq3lY