密码哈希值,从 php 5.4 到 5.6

password hashes, from php 5.4 to 5.6

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

   password_hash($password, PASSWORD_DEFAULT, 10);    

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

但是,我知道 PASSWORD_DEFAULT 不是 PHP < 5.5 上的 bcrypt 算法,但它确实在我新安装的 php 5.6 上使用了 bcrypt。

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

password_hash($password, PASSWORD_DEFAULT, 10);

你确定是这个意思?

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

However, I understand that PASSWORD_DEFAULT is not the bcrypt algo on PHP < 5.5

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

无论如何,这应该 "just work"。如果没有,则说明您从一开始就有一个奇怪且可能不安全的设置。