gpt4 book ai didi

python - 可以将简单的 MD5 哈希转换为 django 密码吗?

转载 作者:行者123 更新时间:2023-11-28 20:23:06 25 4
gpt4 key购买 nike

我有一个遗留用户数据库,我想将其集成到一个新的 Django 项目中。

用户密码通过简单明了的 MD5 加密(PHP md5() 函数)保存在旧数据库中,没有任何加盐。

覆盖 django.contrib.auth 的 check_password 和 set_password 不是一个选项,因为我已经有新用户活跃在新的 Django 项目上。

查看了 passlib ,但不幸的是,它没有完成该特定项目需要完成的工作。

所以基本上,我唯一的选择是以某种方式将哈希值转换为 Django 加盐格式,或实现自定义 check_password 方法,这将确定密码是纯 MD5 还是 django 密码(甚至可能通过我自定义中的参数用户模型,类似于 legacy=True bool 标志)。

非常感谢任何帮助。

最佳答案

Django contrib.auth.hashers module 已经支持普通的、未加盐的 MD5 密码:

# Ancient versions of Django created plain MD5 passwords and accepted
# MD5 passwords with an empty salt.
if ((len(encoded) == 32 and '$' not in encoded) or
(len(encoded) == 37 and encoded.startswith('md5$$'))):
algorithm = 'unsalted_md5'

因此,如果您的散列长度为 32(散列的十六进制表示),并且不包含 $ 字符(这表明存在散列签名前缀), 散列长度为 37 个字符,以 md5$$ 开头,那么您的散列已经受支持。

更好的是:任何成功通过身份验证的用户的密码哈希都会自动更新为当前的首选方案。您的用户将自己迁移您的数据库。

关于python - 可以将简单的 MD5 哈希转换为 django 密码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21600088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com