如何在PHP下生成.htpasswd

时间:2012-05-08 11:13:31

标签: php apache .htpasswd

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

我做错了什么?

2 个答案:

答案 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   失败了。支持的选项:

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

答案 1 :(得分:0)

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

通常,我之前使用this来生成条目。