wri*_*ist 0 php random passwords generator
我正在尝试做标题所说的事情,这就是我能弄清楚如何在 php 中做的所有事情。
<?php
$random = substr(md5(mt_rand()), 0, 8
echo $random;
?>
Run Code Online (Sandbox Code Playgroud)
我创建了这个基本代码:
$digits = array_flip(range('0', '9'));
$lowercase = array_flip(range('a', 'z'));
$uppercase = array_flip(range('A', 'Z'));
$special = array_flip(str_split('!@#$%^&*()_+=-}{[}]\|;:<>?/'));
$combined = array_merge($digits, $lowercase, $uppercase, $special);
$password = str_shuffle(array_rand($digits) .
array_rand($lowercase) .
array_rand($uppercase) .
array_rand($special) .
implode(array_rand($combined, rand(4, 8))));
echo $password;
Run Code Online (Sandbox Code Playgroud)
首先,我创建数组,其中的键是变量名称所描述的内容。这可能看起来有点奇怪,但这样做是因为array_rand()返回随机键,而不是随机值。
通过显式定义不同类型的字符,您可以删除一些讨厌的字符。例如,根据您的字体,可能很难区分I、1、|和l或O和。0您可能想删除它们。您还可以定义自己的特殊字符集。
然后,我通过明确声明来保证至少存在一个大写字母、一个小写字母、一个特殊字符和一个数字。
最后,我添加一部分随机长度的随机字符并对整个字符串进行打乱。
注意:为用户选择密码可能是个好主意。用户常常发现很难选择一个好的密码。然而,您会遇到非常难以记住且难以输入的密码。这真的有必要吗?例如,如果您要求提供电子邮件地址和密码,那么 5 位 PIN 码就已经给出了 99999 个可能的密码。好多啊。如果在登录表单被阻止之前只允许用户尝试输入错误密码 5 次,那么黑客通过暴力破解成功的几率只有 0.006%。这些可能性并不大。对于用户来说,五位数字的密码更容易使用。密码的强度应与其保护的内容和其他风险因素成正比。您所使用的密码被成功破解的几率可能为 0.00000000001%,但如果用户“自愿”向黑客提供密码(例如通过社交黑客)的几率为 0.0001%,那么这样的安全密码就没有意义了。
| 归档时间: |
|
| 查看次数: |
4705 次 |
| 最近记录: |