使用盐的.htpasswd密码进行Apache身份验证


apache authentication with .htpasswd password using salt

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

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

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

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

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

谢谢

我找到了答案。

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

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

生成的哈希将由盐 + 另外 11 个字符组成。

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

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

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