我是PHP和MySQL的新手。我使用SHA1
列出了存储在MySQL中的200个密码。我想将这些更新为password_hash()
。这样做的最佳方式是什么?
答案 0 :(得分:3)
您无法直接执行此操作,因为SHA1哈希不可逆。您只能在用户成功登录时计算password_hash。
答案 1 :(得分:2)
如果没有明文,则无法生成新哈希。
在这种情况下,我要做的是强制所有用户在新的哈希算法到位后重置密码。如果您已经有密码重置系统,这应该相当容易。如果没有,你将不得不建立一个。
这就是我看待它的工作原理
您可以通过在登录时将用户密码更新为新哈希来慢慢迁移到新系统,但在用户登录之前,您仍然会存储较弱的哈希值。我认为最好放弃旧系统和开始新鲜,而不是试图兼顾旧的和新的哈希。
答案 2 :(得分:1)
password_hash使用的哈希机制是单向的,这意味着无法从哈希中获取实际值。我将在这里做两个假设:
SHA-1
转换为password_hash
默认值。在密码表中创建一个额外的列,用于存储新的哈希。当用户成功登录时,使用默认哈希散列密码并将其存储在新列中。经过一段时间后,您将转换大部分哈希值。标记其余用户并要求他们重置密码。显然,必须先修改密码检查机制,然后使用默认值检查密码。如果哈希的值为空,那么您将不得不继续使用SHA-1哈希(及其"转换")。
在现实世界中,对于您的客户而言,这比向所有客户重置密码更好。