Laravel使用bcrypt
来散列密码.
根据本文,在该过程的某个时刻,Hash::make
函数创建并使用22个长度的随机字符串作为盐来生成密码.
对于一个不同的密码,Hash::make
确实会返回唯一的散列,这意味着它确实在过程中的某个地方使用了某种盐渍.
但是这些盐没有存储在USERS表中,这是我期望它们的位置.laravel如何知道用于验证密码的适当散列?
Laravel使用bcrypt
来散列密码.
根据本文,在该过程的某个时刻,Hash::make
函数创建并使用22个长度的随机字符串作为盐来生成密码.
对于一个不同的密码,Hash::make
确实会返回唯一的散列,这意味着它确实在过程中的某个地方使用了某种盐渍.
但是这些盐没有存储在USERS表中,这是我期望它们的位置.laravel如何知道用于验证密码的适当散列?
您链接的文章似乎包含了答案. 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). 因此,您不需要将盐/成本单独存储在 数据库表.