猿问

如何在python中将md5 32字节哈希转换为相应的sha256

我有一个包含 md5 哈希的数据库,我想将它们转换为另一种类型的哈希,以便用户可以登录到新网站。

我正在使用该werkzeug.security库来生成哈希。

我有什么办法可以做到吗??


狐的传说
浏览 390回答 2
2回答

慕标琳琳

MD5 是一种单向散列函数,无法将其反转,因此可以将其重新编码为另一种类型的散列。这个问题通常的处理方法是拦截登录过程,获取明文密码,并为新系统单独编码。确保您使用的是现代密码散列算法,例如bcrypt或scrypt,而不是 SHA256。

慕姐8265434

不。哈希是不可逆的,所以你不能直接这样做。解决这个问题的方法是,当旧用户登录时,您根据 md5 哈希验证他们的密码,如果匹配,则从纯文本密码创建 SHA256 哈希,在数据库中设置新的 SHA256 哈希(或者作为单独的字段或通过在散列本身前面使用散列类型标识符),然后删除 MD5 散列值。一段时间后(例如一年),您删除所有现有的 MD5 哈希值,并使尝试在没有有效哈希值的情况下登录的人通过现有方式重置其密码,然后仅填充 SHA256 字段。
随时随地看视频慕课网APP

相关分类

Python
我要回答