我目前正在处理几个包含 MD5 散列密码的用户帐户。这些帐户从旧系统迁移到我们当前使用 PBKDF2 进行密码散列的系统。我也想将旧帐户提升到 PBKDF2 密码散列。
破解我们自己的 MD5 散列并用 PBKDF2 重新散列它们是不可能的。
首先想到的是在登录时迁移用户密码,如此处所述。
但是,我将永远无法迁移所有用户密码,因为某些用户可能永远不会返回,因此永远不会再次登录,这让我永远拥有不安全的哈希值。
所以剩下两个选择:
- 重置所有密码并通过电子邮件通知用户
- 使用 PBKDF2 再次对数据库中的 MD5 散列进行散列,并在“旧用户”登录时使用此双重散列。含义
PBKDF2(MD5(plaintext))
。
第一个解决方案对用户来说真的很不愉快,因为他们必须设置一个新密码,所以我倾向于第二种解决方案。 这似乎支持这种方法,虽然主要谈论 bcrypt 而不是 PBDKF2
将 MD5 包装在 PBKDF2(或者,就其价值而言,其他安全散列算法)中是否可以安全地完成,或者是否有更好的方法来处理旧的、不安全的 MD5 散列?