我有一个包含md5哈希的数据库,我想将它们转换为另一种类型的哈希,以便用户可以登录到新网站。
我正在使用qazxsw poi库来生成哈希。
我还有办法吗?
MD5是单向散列函数,没有办法将其反转,因此可以将其重新编码为另一种类型的散列。
解决此问题的常用方法是拦截登录过程,获取纯文本密码并为新系统单独编码。确保使用现代密码散列算法,如werkzeug.security
或bcrypt而不是SHA256。
不,哈希不可逆,所以你不能直接这样做。
解决这个问题的方法是,当旧用户登录时,根据md5哈希验证其密码,如果匹配,则从纯文本密码创建SHA256哈希,在数据库中设置新的SHA256哈希值(如单独的字段或在散列本身前面使用散列类型标识符,然后删除MD5散列值。
一段时间后(例如一年),您删除所有现有的MD5哈希值,并使那些尝试登录而没有有效哈希的人通过现有方法重置密码,然后只填充SHA256字段。