我使用PHP的password_hash和bcrypt算法來哈希我的密碼。他們在MySQL數據庫中。需要從數據庫中獲取散列? password_hash bcrypt
password_hash($password, PASSWORD_BCRYPT);
正如顯而易見的,由這個函數生成的每個散列都是不同的。但是真的有必要通過電子郵件/登錄識別用戶,或者從數據庫中抓取他的散列,然後用PHP的password_verify()
驗證它?
真的有必要做這個查詢,然後檢查嗎?
我的意思是,是否有可能在之前檢查散列,並且僅在查詢後檢查它是否與MySQL中的匹配?
或者別的什麼可能?我記得幾年前我曾經喜歡的東西里面查詢檢查,像
WHERE login = $login and pass = PASSWORD($password)
尤其是我的意思是PASSWORD($password)
?
是否有其他選擇,而不是從數據庫中獲取用戶的散列,然後用password_verify()
驗證這個散列?
無論發生什麼,您都必須深入研究數據庫。我不確定你在想什麼*任何*解決方案都不會涉及數據庫調用。你的「檢查哈希之前」將檢查*對*? – ceejayoz
@cee那麼,在「傳統」MD5哈希或這樣的「你可以檢查」(星號,星號,腳註,警告......)。 – deceze
@deceze您可以在使用MD5查詢之前計算哈希值,但仍然必須執行查詢以查看哈希值是否與您的文件相匹配。 – ceejayoz