文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

在 PHP 中生成密码

2024-02-27 20:49

关注

我们将介绍一种使用 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 变量、08 作为参数。将函数存储在 $pwd 变量中并打印该变量。

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

代码示例:


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

输出:


jenZq3lY
阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯