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

时间:2019-02-22 13:40:06

标签: python werkzeug

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

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

我有办法做到吗?

2 个答案:

答案 0 :(得分:5)

MD5是一种单向哈希函数,无法将其反转,因此可以重新注释为另一种哈希。

解决此问题的常用方法是拦截登录过程,获取纯文本密码,然后为新系统分别对其进行编码。确保您使用的是bcryptscrypt之类的现代密码哈希算法,而不是SHA256。

答案 1 :(得分:3)

不。哈希不可逆,因此您不能直接这样做。

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

过一会儿(例如一年),您将删除所有现有的MD5哈希值,并使试图在没有有效哈希的情况下登录的用户通过现有方式重置其密码,然后仅填充SHA256字段。