在 PHP 中生成密码

Subodh Poudel 2023年1月30日
  1. 在 PHP 中使用 rand() 函数选择随机数组索引以生成随机密码
  2. 在 PHP 中使用 openssl_random_pseudo_bytes()bin2hex() 函数生成随机密码
  3. 使用 substr()str_shuffle() 函数从 PHP 中的给定字母数字字符串生成随机密码
在 PHP 中生成密码

我们将介绍一种使用 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 手册 以了解有关 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
作者: Subodh Poudel
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn

相关文章 - PHP Password