将用户密码从salted SHA1升级到bcrypt

时间:2013-10-03 14:26:20

标签: php codeigniter laravel sha1 bcrypt

我被聘请在新的PHP 5.3服务器上使用Laravel 4重建一个在CodeIgniter 1.7.3(在PHP 4.2服务器上)上构建的活跃应用程序。

系统有大约500个用户,其密码使用加盐的SHA-1哈希进行加密。我想使用bcrypt来提高应用程序的安全性,以及与Laravel 4的身份验证系统集成。

您如何建议迁移这些用户密码?

3 个答案:

答案 0 :(得分:10)

散列的重点是你无法恢复原始密码。

您有三种选择:

  • 存储SHA1哈希的bcrypt哈希值,然后SHA1哈希每个密码,然后在每次登录时加密它。
    这可能不是一个好主意

  • 下次用户登录时升级每个哈希值。(以便您使用纯文本进行哈希)
    这是最好的选择,但您需要保留SHA1哈希值和转换代码,直到每个用户都登录

  • 将每个用户重置为随机加密密码并强制他们全部使用忘记密码将其更改回来。
    您可能不想这样做

答案 1 :(得分:7)

  • 向数据库添加一列,告诉系统使用了哪种哈希算法
  • 登录时,检查凭据是否正常
  • 如果他们使用旧版本并且登录成功 - 请输入他们输入的密码并在数据库中更新他们的密码和算法。

答案 2 :(得分:1)

您可以为每个用户创建一个随机密码,并使用新密码向每个人发送通知电子邮件。但如果用户没有看到该电子邮件,这将导致混淆。

我建议您为bcrypt值添加另一个db字段,然后在用户在更改后第一次登录时创建一个条目。您可以使用单独的字段或删除旧的哈希来跟踪。

当您的活跃用户迁移后,您可以随意使用随机密码方法完成其他用户群的迁移。