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

Nic*_*ick 6 php sha1 codeigniter bcrypt laravel

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

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

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

SLa*_*aks 10

哈希的重点是您无法恢复原始密码.

你有三个选择:

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

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

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

  • 正如SLaks所说可能需要很长时间.也许最好为每一行存储一个"算法",告诉系统使用算法​​,并在下次登录时更新为bcrypt.这样您也可以在以后更改算法,并且不必担心返回并删除SHA列并弄乱某些用户的数据. (2认同)

Jon*_*hon 7

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