密码哈希,从PHP 5.4到5.6

时间:2015-12-01 16:38:29

标签: php encryption compatibility

我有一个旧的数据库,用户和他们的密码哈希使用php 5.4生成,具有以下功能:

   password_hash($password, PASSWORD_DEFAULT, 10);    

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

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

如何让旧用户登录我的网站而不重置所有密码?这可能吗?

1 个答案:

答案 0 :(得分:1)

password_hash($password, PASSWORD_DEFAULT, 10);

当然你的意思是这个?

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

但是,我知道PASSWORD_DEFAULT不是PHP上的bcrypt算法< 5.5

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

无论哪种方式,这应该"只是工作"。如果它没有,那么从一开始就有一个奇怪且可能不安全的设置。