[英]How to verify a htpasswd-generated bcrypt hash using PHP?
我必須使用 PHP 的password_verify
(v7.4.3) 驗證 apache 的htpasswd
工具 (v2.4.41) 創建的 bcrypt-hashes。
但如果我生成一個 hash:
$ 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
...打印mismatch
。 然而,PHP 可以驗證自己的 bcrypt 哈希...
cat << EOF | php -a
if (password_verify('test', password_hash('test', PASSWORD_BCRYPT))) {
echo 'match';
} else {
echo 'mismatch';
}
EOF
...這打印match
。 如何獲取password_verify
以驗證外部生成的 bcrypt hash?
問題是,在我的實際代碼中,由於對.htpasswd
文件中的 hash 值的解析不正確,hash 末尾有額外的空格。
OP 中的“簡化”示例引入了另一個不同的問題(由於命令行上 hash 中的 escaping 特殊字符)並因此失敗。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.