passwords - 如何将密码哈希从 MD5 转换为 SHA?

标签 passwords md5 hash sha

我有一个旧应用程序,它的用户密码以 MD5 哈希值存储在数据库中。我想用 SHA-2 系列中的内容替换它。

我想到了两种可能的方法来实现这一目标,但两种方法看起来都相当笨拙。

1) 添加 bool “标志”字段。此后用户第一次进行身份验证时,将 MD5 密码哈希替换为 SHA 密码哈希,并设置标志。然后我可以检查该标志以查看密码哈希是否已转换。

2) 添加第二个密码字段来存储 SHA 哈希值。此后用户第一次进行身份验证时,使用 SHA 对密码进行哈希处理并将其存储在新字段中(可能同时删除其 MD5 哈希值)。然后我可以检查SHA字段是否有值;这基本上成为我的旗帜。

无论哪种情况,对于不经常登录的用户来说,MD5 身份验证都必须保留一段时间。任何不再活跃的用户将永远不会切换到 SHA。

有更好的方法吗?

最佳答案

本质上是一样的,但可能比添加额外的字段更优雅:在 Django 中的默认身份验证框架中,密码哈希值存储为如下构造的字符串:

hashtype$salt$hash

哈希类型是 sha1 或 md5,盐是一个随机字符串,用于对原始密码加盐,最后是哈希本身。示例值:

sha1$a1976$a36cc8cbf81742a8fb52e221aaeab48ed7f58ab4

关于passwords - 如何将密码哈希从 MD5 转换为 SHA?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1381448/

相关文章:

c# - ASP.NET Identity 的默认密码哈希器 - 它如何工作并且安全吗?

java - 给定用于修改字符串的方法,如何将修改后的字符串反转回 MD5 哈希?

Azure 数据流 md5 函数不将十进制值识别为唯一

arrays - 数组哈希中缺少零

windows - 如何将提交哈希添加到可执行文件的详细信息

shell - GnuPG Shell 脚本 - 拒绝读取密码

git - 强制 git 始终要求输入密码

php - 最佳加密技术

hash - 截断的md5均匀分布?

xml - PowerShell:带有 ConvertTo-XML 输出的自定义属性 XML 标签