我想知道Apache服务器如何使用.htpasswd
我在文件夹中有一个.htpasswd
文件。 .htpasswd
内容是使用php生成的,密码使用crypt()
函数加密,如下所示:
crypt($password,mb_substr($password,0,2));
问题在于,无论我使用哪种盐:mb_substr($password,0,2)
或my_private_salt
或“任何”,如果我传递正确的用户名/密码组合,服务器将始终对我进行身份验证。
那么,那盐的含义是什么?
由于
答案 0 :(得分:0)
我找到了答案。
php crypt()函数生成一个唯一的哈希。如果未指定盐,则将生成随机盐。
BIG 问题是,只有密码中的前8个字符才能用于生成哈希,而盐中只有两个字符。
结果哈希将由salt +另外11个字符组成。
例如: 如果我们这样做:crypt('1234567','12') 结果将是“120QBxD1IX.Cw”。 注意hash(12)
中的前两个字符这就是Apache服务器将如何加密请求并将其与.htpasswd文件中保存的哈希值进行比较的方法。
有关更好的说明,请参阅此链接:http://blog.irreverence.co.uk/?p=858