【问题标题】:password hashes, from php 5.4 to 5.6密码哈希,从 php 5.4 到 5.6
【发布时间】:2015-12-01 16:38:28
【问题描述】:

我有一个旧数据库,其中包含使用 php 5.4 生成的用户及其密码哈希,具有以下功能:

   password_hash($password, PASSWORD_DEFAULT, 10);    

现在我正在使用 php 5.6 的 laravel 创建一个新网站,我想让旧用户使用相同的凭据登录新网站。

但是,我知道 PASSWORD_DEFAULT 不是 PHP

如何让老用户在不重置所有密码的情况下登录我的网站?这可能吗?

【问题讨论】:

  • 用于哈希的算法、盐和成本参数都存储为哈希值的一部分,因此 password_verify() 将始终能够验证,无论后续算法、成本、等等......对这些默认值的更改只会影响新的密码哈希......所以登录现有哈希不需要更改/密码重置

标签: php encryption compatibility


【解决方案1】:
password_hash($password, PASSWORD_DEFAULT, 10);

你确定是这个意思吗?

password_hash($password, PASSWORD_DEFAULT, ['cost' => 10]);

但是,我知道 PASSWORD_DEFAULT 不是 PHP

这是因为 password_hash()password_verify() 在 PHP 5.4 中不存在。您可能正在使用ircmaxell/password_compat,它在 5.4 中提供了此功能。另外,PASSWORD_DEFAULT 在 password_compat 中是 bcrypt。

无论哪种方式,这应该“正常工作”。如果不是这样,您从一开始就有一个奇怪且可能不安全的设置。

【讨论】:

    猜你喜欢
    • 2017-12-29
    • 2019-07-24
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多