Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP验证htpasswd生成的bcrypt哈希?_Php_Hash_Bcrypt_.htpasswd - Fatal编程技术网

如何使用PHP验证htpasswd生成的bcrypt哈希?

如何使用PHP验证htpasswd生成的bcrypt哈希?,php,hash,bcrypt,.htpasswd,Php,Hash,Bcrypt,.htpasswd,我必须使用PHP的password\u verify(v7.4.3)验证apache的htpasswd工具(v2.4.41)创建的bcrypt哈希 但如果我生成一个散列: $ htpasswd -nbB test pass test:$2y$05$m73wHlBS62EUh7uAxbUCJ.gHIfcEgiorl/1LrzNRAlSSH4bmrBUEy 。。。然后尝试用PHP验证它 cat << EOF | php -a if (password_verify('pass', '$

我必须使用PHP的
password\u verify
(v7.4.3)验证apache的
htpasswd
工具(v2.4.41)创建的bcrypt哈希

但如果我生成一个散列:

$ htpasswd -nbB test pass
test:$2y$05$m73wHlBS62EUh7uAxbUCJ.gHIfcEgiorl/1LrzNRAlSSH4bmrBUEy
。。。然后尝试用PHP验证它

cat << EOF | php -a
if (password_verify('pass', '$2y$05$m73wHlBS62EUh7uAxbUCJ.gHIfcEgiorl/1LrzNRAlSSH4bmrBUEy')) {
  echo 'match';
} else {
  echo 'mismatch';
}
EOF

。。。这将打印匹配的
。如何获取
password\u verify
以验证外部生成的bcrypt哈希?

问题是,在我的实际代码中,由于对
.htpasswd
文件中的哈希值进行了错误的解析,哈希末尾有额外的空白


OP中的“简化”示例引入了另一个不同的问题(由于在命令行上转义散列中的特殊字符)因此失败。

问题是,在我的实际代码中,由于对
.htpasswd
文件中的哈希值进行了不正确的解析,哈希值的末尾有额外的空格


OP中的“简化”示例引入了另一个不同的问题(由于在命令行上转义散列中的特殊字符),因此失败。

我无法重现您的问题。我在测试该哈希时得到“匹配”:我无法重现您的问题。我在测试该哈希时得到“匹配”:这就是为什么您的问题应该包括实际代码。很高兴你找到了答案。这就是为什么你的问题应该包括你的实际代码。很高兴你找到了答案。
cat << EOF | php -a
if (password_verify('test', password_hash('test', PASSWORD_BCRYPT))) {
  echo 'match';
} else {
  echo 'mismatch';
}
EOF