Laravel 中的哈希方法

Hash method in Laravel

我有一个关于 Laravel 4.2 中的 Hash::make 方法的问题。我注意到它 returns 对于相同的值总是不同的字符串。所以我想知道这是否会影响如果我想在 table 中使用他的电子邮件和散列密码查找用户。如果不是?为什么我会遇到这个问题,即无法使用 where 语句(电子邮件地址和密码)从 table 获得具有正确凭据的用户?但是当我只使用电子邮件查找它时它有效..我 100% 相信它只是关于密码。你怎么看 ?

您故意得到不同的哈希值,该函数为每个哈希密码添加了一个随机盐。这对于获得安全哈希值很重要。

// Hash a new password for storing in the database.
// The function automatically generates a cryptographically safe salt.
$hashToStoreInDb = Hash::make($password);

验证不能直接在SQL语句中进行,而是可以通过username/email搜索用户,获取存储的密码哈希,然后用密码验证输入的密码-来自数据库的哈希值。

// Check if the hash of the entered login password, matches the stored hash.
// The salt and the cost factor will be extracted from $existingHashFromDb.
$isPasswordCorrect = Hash::check($password, $existingHashFromDb);