众所周知,Drupal使用SHA2方法存储密码,其中包含Encryption + Hashing + Salt。
我有一个密码列表,目前我的一些客户在Drupal中使用过。由于我们已将整个系统迁移到Custom PHP,因此我们无法使用相同的密码。我们真的不想让数据库中的每个人都生成新的密码。
如果有任何方法,我们可以更改SHA2(Drupal - 512加密)中的所有密码,以支持我们当前拥有MD5 / SHA1(PHP Mysql数据库)的新系统。
任何帮助都将不胜感激。
答案 0 :(得分:3)
你真的不想转到 MD5。就密码散列方法而言,它已经死了。你应该移动到password_hash
和Bcrypt这样的绝对最小值。
请记住,当有人登录并验证他们的密码是否正确时,您有机会更新密码在数据库中的散列方式。如果他们使用弱方法,请切换到强大的方法并保存他们的用户记录。没有人会知道你做了什么。
大约一年后,如果您担心这种挥之不去的责任,您可以随时强制使用所有旧格式的密码。您的所有活跃用户都不会受到影响。
答案 1 :(得分:1)
我不建议更改为其他密码格式,尤其是MD5。由于您已经拥有密码,因此可以在自己的应用程序中实现Drupal密码哈希,并继续使用现有密码。
有关密码格式的更多信息,例如可以在this question中找到。
答案 2 :(得分:0)
I think you should use a 'transition'. For example use your new system but let the old password in the database.
In your code, on user login you get the password (ex: $_POST['pwd']
), and crypt it using a strong algorithm (not MD5). Then, you can insert it in a new field of your database.
So, your new database could have a field 'old_pwd' that contains the old password and a field 'pwd' that contains the new password using your new algorithm. According to me this is the easiest to do this migration.
答案 3 :(得分:0)
密码检查代码在Drupal 7和8中非常相似,并且易于借用,它对Drupal组件没有任何强烈的依赖性。在您的密码检查代码中添加对Drupal哈希的支持应该非常容易。允许使用通过在数据库中存储Drupal哈希来使用其密码进行身份验证。
要迁移到新的哈希算法,只需在成功进行身份验证时重新哈希密码即可。这样,旧的哈希将随着时间的推移而被替换。
Drupal具有类似的机制来确保透明更新或旧的MD5哈希值。查看user_check_password()和user_needs_new_hash(),了解如何完成。