2

我试图用很多用户(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

我做错了什么?

4

2 回答 2

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。支持的选项:

http://php.net/manual/en/function.password-hash.php

于 2015-09-10T23:34:09.313 回答
0

我建议研究如何生成哈希的确切方式。如果您使用您的方法创建哈希,它看起来是否与 DirectAdmin 生成的相同?

一般来说,我以前用来生成条目。

于 2012-05-08T11:19:04.100 回答