Vấn đề là… Bạn phải lưu trữ muối, băm mật khẩu
trong cơ sở dữ liệu. Vì chúng được muối riêng mỗi người dùng / mật khẩu, bạn không thể tra cứu chúng trực tiếp bằng password = ?
, bởi vì bạn không biết muối và do đó không thể tính toán trước hàm băm phù hợp. Nếu bạn đang làm điều này đúng cách, bạn phải tìm nạp bản ghi người dùng bằng tên người dùng trước, sau đó xác thực băm mật khẩu bằng cách sử dụng muối / băm đã truy xuất. Mã giả:
$user = fetch_from_database($_POST['username']);
if (!$user) {
throw new Exception("User doesn't exist");
}
if (!password_verify($_POST['password'], $user['password_hash'])) {
throw new Exception('Invalid password');
}
echo 'Welcome ', $user['name'];
Xem http://php.net/password_hash , http://php.net/password_verify .