我正在尝试生成包含大量用户的长htpasswd文件(100+)。
我在linux服务器上的DirectAdmin面板生成带有$1$开始的密码散列的htpasswd文件。
我尝试了这样的东西:
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
我做错了什么?
发布于 2015-09-11 07:34:09
下面是我生成.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。支持的选项:
http://php.net/manual/en/function.password-hash.php
发布于 2012-05-08 19:19:04
我建议研究哈希是如何生成的。如果您使用自己的方法创建散列,它看起来是否与DirectAdmin生成的散列相同?
一般来说,我以前使用过this来生成条目。
https://stackoverflow.com/questions/10497493
复制相似问题