我试图用很多用户(100 +)生成长htpasswd文件。
Linux服务器上的我的DirectAdmin面板生成htpasswd文件,密码哈希以$ 1 $开头。
我试过这样的事情:
function random_salt($length = 9) // 9 characters and $1$ = 12 characters
{
$chars = 'bcdfghjklmnprstvwxzaeiou';
for ($p = 0; $p < $length; $p++)
{
$result .= ($p%2) ? $chars[mt_rand(19, 23)] : $chars[mt_rand(0, 18)];
}
return $result;
}
echo crypt($myplainpassword, "$1$".random_salt());
它生成以$ 1 $开头的哈希,但服务器不允许我进入。我的密码是在excel中生成的4位随机“pin代码”。例子:
1215 5325 6261
我做错了什么?
答案 0 :(得分:1)
这是我如何生成.htpasswd密码......
$new_password = password_hash($old_password, PASSWORD_BCRYPT);
password_hash()使用强单向创建新密码哈希 哈希算法。 password_hash()与crypt()兼容。 因此,crypt()创建的密码哈希值可以使用 password_hash()。
目前支持以下算法:
PASSWORD_BCRYPT - 使用CRYPT_BLOWFISH算法创建哈希。 这将使用“$ 2y $”生成标准的crypt()兼容哈希 标识符。结果将始终为60个字符的字符串,或者为FALSE 失败了。支持的选项:
答案 1 :(得分:0)
我建议查看哈希生成的确切方式。如果使用您的方法创建哈希,它是否与DirectAdmin生成的哈希相同?
通常,我之前使用this来生成条目。