使用salt的.htpasswd密码进行apache身份验证

时间:2013-09-27 10:08:50

标签: php apache authentication salt .htpasswd

我想知道Apache服务器如何使用.htpasswd

对我进行身份验证

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

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

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

那么,那盐的含义是什么?

由于

1 个答案:

答案 0 :(得分:0)

我找到了答案。

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

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

结果哈希将由salt +另外11个字符组成。

例如: 如果我们这样做:crypt('1234567','12') 结果将是“120QBxD1IX.Cw”。 注意hash(12)

中的前两个字符

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

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