SQL コマンドの末尾に予備の " があります。; も、mySQL コマンド ライン クライアントを除いて必要ありません (クライアント ライブラリによってはエラーが発生する場合があります)。
ソルトされたパスワード ハッシュは通常、ソルト文字列 (ハッシュされたパスワードのプレフィックスとして保存される場合もあります) を取得し、ソルトを計算して結果を比較することによって検証されます。
擬似コード:
($id, $salt, $stored_hashed_password) = SELECT id, salt, hashed_password FROM members WHERE name=?
$entered_hash_password = hash_password($salt, $entered_cleartext_password)
if ($entered_hash_password == $stored_hash_password) {
say "Yeah, you got it!";
} else {
say "Go away!";
}
比較は明らかに文字列比較でなければなりません。
更新: ハッシュ化されたパスワードに関する非常に単純な例:
平文パスワード: 10 Salt "文字列": 5 ハッシュ関数: $cleartext * $salt ハッシュされたパスワード: 50
ハッシュ化されたパスワードから元のパスワードを抽出することはできませんでした。パスワードは、25、1、50、10、5 のいずれかです。
実際のハッシュ関数は、はるかに複雑で元に戻せません。
疑似コード サンプルで使用される hash_password() 関数は、パスワードをデータベースに格納するためにパスワードを最初にハッシュするときに使用されるものでなければなりません。「パスワードの変更」に使用されるソース コード関数を確認する