我有一个旧应用程序,其中用户密码以MD5哈希的形式存储在数据库中。我想用SHA-2家族中的某种方法来替换它。
我想到了两种可能的方法来实现这一点,但都似乎有些笨重。
1)添加一个布尔型“标志”字段。用户首次进行身份验证后,将MD5密码哈希替换为SHA密码哈希,并设置标志。然后我可以检查该标志以确定密码哈希是否已被转换。
2)添加第二个密码字段以存储SHA哈希。用户首次进行身份验证后,使用SHA对其密码进行哈希并将其存储在新字段中(可能同时删除其MD5哈希)。然后我可以检查SHA字段是否具有值;这基本上变成了我的标志。
在任何情况下,MD5身份验证都必须保留一段时间,以供不经常登录的用户使用。而任何不再活动的用户将永远不会切换到SHA。
有更好的方法来做到这一点吗?