Laravel使用bcrypt
来散列密码。
根据这篇文章,在这个过程的某个时刻,Hash::make
函数创建并使用一个22长的随机字符串作为盐来生成密码。
对于单个不同的密码,Hash::make
会返回唯一的哈希值,暗示它确实在流程中的某处使用了某种盐析。
但是这些盐并没有存储在用户表中,我希望它们存在于用户表中。 laravel如何知道用于验证密码的相应哈希?
答案 0 :(得分:14)
您链接的文章似乎包含答案。 https://mnshankar.wordpress.com/2014/03/29/laravel-hash-make-explained/
这的巧妙之处在于算法,盐和成本 嵌入到哈希中,因此可以很容易地解析出来 用于重建/验证的个别组件(请参阅 php crypt源代码的相关部分 https://github.com/php/php-src/blob/master/ext/standard/crypt.c#L258)。 因此,您无需单独存储盐/成本 数据库表。