python中如何将md5 32字节散列转换为相应的sha256

How to convert md5 32 bytes hash to corresponding sha256 in python

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

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

有什么办法吗??

MD5 是一种单向散列函数,无法反转它,因此可以将其重新编码为另一种类型的散列。

这个问题通常的处理方法是拦截登录过程,获取明文密码,针对新系统单独编码。确保您使用的是现代密码哈希算法,例如 bcrypt or scrypt 而不是 SHA256。

没有。哈希是不可逆的,所以你不能直接这样做。

解决这个问题的方法是,当旧用户登录时,根据 md5 哈希验证他们的密码,如果匹配,则从纯文本密码创建 SHA256 哈希,将新的 SHA256 哈希设置为数据库(作为单独的字段或通过在哈希本身前面使用哈希类型标识符),然后删除 MD5 哈希值。

一段时间后(例如一年),您删除了所有现有的 MD5 哈希值,并让试图在没有有效哈希值的情况下登录的人通过现有方式重置密码,然后仅填充 SHA256 字段。