繁体   English   中英

将password_hash更改为bcrypt

[英]Change password_hash to bcrypt

我接受了一个旧项目,并开始与Laravel再次进行开发,但是我正在为已经在数据库中注册的使用权用户苦苦挣扎。

我相信他们使用

password_hash('',PASSWORD_DEFAULT)方法

但我认为Laravel使用

Bcrypt()

因此,我无法使用这些凭据登录。 有什么办法可以更改加密?

我不想让用户更改密码或其他任何内容

阅读非常好的手册将揭示 PASSWORD_BCRYPT方法:

password_hash("thepassword", PASSWORD_BCRYPT);

如果他们已有密码,则可以使用password_verify()确认密码,而不管密码如何进行哈希处理。


您可以将用户的密码哈希转换为新的密码哈希,但只能在用户登录时进行。 您将需要添加另一列以保存新密码,然后在他们登录时检查现有密码(如果可能,请进行验证),并在新列中输入空白。 如果新列不为空,则将其与password_verify()进行比较。 如果为空,请使用所示方法对新密码进行哈希处理。

最终,每个人​​都将在登录时更改其哈希方法,但是您将需要做一些工作才能使代码具有足够的形状,从而可以安全可靠地执行转换。

Laravel使用bcrypt散列,与password_hash使用PASSWORD_BCRYPT或PASSWORD_DEFAULT算法使用的散列相同。

因此,哈希值已经与Laravel兼容。 使用修补匠可以很容易地验证这一点:

> $hash = password_hash('test', PASSWORD_DEFAULT);
"$2y$10$OpnZSN0EbAzMCvywTAWyWOqOme6/3N/xe.nrpcUO6mhLumMxL6DYm"
> Hash::check('test', $hash);
true

Laravel还允许您通过绑定到ioc容器轻松地插入自己的Hasher接口实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM