0

我想知道 Apache 服务器如何对我进行身份验证.htpasswd

我在文件夹中有一个.htpasswd文件。内容是用php生成的.htpasswd,密码是用这样的crypt()函数加密的:

crypt($password,mb_substr($password,0,2));

问题是,无论我使用哪种盐:mb_substr($password,0,2)my_private_salt“无论”,如果我通过正确的用户名/密码组合,服务器将始终对我进行身份验证。

那么,这种盐有什么意义呢?

谢谢

4

1 回答 1

0

我找到了答案。

php crypt() 函数生成一个唯一的散列。如果未指定盐,则将生成随机盐。

一个问题是密码中只有前 8 个字符将用于生成哈希,而盐中只有两个字符。

生成的哈希将由盐 + 其他 11 个字符组成。

例如:如果我们这样做:crypt('1234567','12'),结果将是“120QBxD1IX.Cw”。注意哈希中的前两个字符 (12)

这就是 Apache 服务器如何知道如何加密请求并将其与 .htpasswd 文件中保存的哈希值进行比较的方式。

如需更好的解释,请参阅此链接:http ://blog.irreverence.co.uk/?p=858

于 2013-09-28T09:53:18.010 回答