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