str_shuffle可以返回非shuffled结果吗?

时间:2014-11-06 17:02:27

标签: php passwords

今天我偶然发现了大约10个月前写的代码:

$password = substr(str_shuffle('abcdefghijklmnopqrstuvwxyz0123456789'), 0, 8);

我相信我选择此代码是因为它非常简单,并且不需要任何额外的维护。

生成密码的需要是因为服务员代表客户填写了快速注册表单,我们只是将密码发送给所述客户。

现在,我的问题围绕着生成" 12345678" 的可能性。密码。在这种情况下,我理解可能性概率之间的争论,但仍然想象自己正在注册一个程序并且你收到这样一个lazzy密码,不会你质疑他们的安全吗?

1 个答案:

答案 0 :(得分:2)

虽然不太可能,但并非不可能

这样的简单包装器
$characters = 'abcdefghijklmnopqrstuvwxyz0123456789';
do {
    $password = substr(str_shuffle($characters), 0, 8);
} while (strpos($characters, $password) !== false);

将确保生成的密码不是在字符串中按顺序显示的序列