我有一个旧应用程序,它的用户密码存储在数据库中,带有 MD5 哈希值。我想用 SHA-2 系列中的东西替换它。
我已经想到了两种可能的方法来实现这一点,但都显得相当笨拙。
1)添加一个布尔“标志”字段。在此之后用户第一次进行身份验证时,将 MD5 密码哈希替换为 SHA 密码哈希,并设置标志。然后我可以检查标志以查看密码哈希是否已被转换。
2) 添加第二个密码字段来存储 SHA 哈希。在此之后用户第一次进行身份验证时,使用 SHA 对密码进行哈希处理并将其存储在新字段中(可能同时删除他们的 MD5 哈希)。然后我可以检查SHA字段是否有值;这基本上成为我的旗帜。
在任何一种情况下,对于不经常登录的任何用户,MD5 身份验证都必须保留一段时间。任何不再活跃的用户将永远不会切换到 SHA。
有一个更好的方法吗?