我正在尝试集成 vBulliten 和 Django 的用户数据库。我知道 vB 使用 md5 算法来散列它的密码,用盐。我有每个 vB 用户的 salt 数据和密码,并且想知道如何将这些帐户导入 Django。
我已经尝试了明显的,将 Django 用户的密码更改为;
md5$vb's_salt$vb's_password
这只是抛出 Django 的登录表单,并显示一条消息“用户名和密码不匹配”
有任何想法吗?
您可以手动从 db 更新密码,也可以编写一些 Python。
User 对象的密码属性是以下格式的字符串:
hashtype$salt$hash
那是 hashtype、salt 和 hash,由美元符号字符分隔。
Hashtype 是 sha1(默认)、md5 或 crypt——用于执行密码单向散列的算法。Salt 是一个随机字符串,用于对原始密码进行加盐以创建散列。请注意,只有具有标准 Python crypt 模块可用的平台才支持 crypt 方法。
例如:
sha1$a1976$a36cc8cbf81742a8fb52e221aaeab48ed7f58ab4
set_password() 和 check_password() 函数在后台处理这些值的设置和检查。
(参考:http ://docs.djangoproject.com/en/dev/topics/auth/#passwords )
显而易见的第一个问题:您是如何更改用户密码的?您需要将 algo$salt$password 字符串直接放入数据库。
vBulleting 可能使用另一种方法从密码和盐创建密码哈希。如果是这种情况,您可能必须实现另一种登录方式,以不同方式检查用户密码,然后将其存储为 Django 格式。
vBulletin 不像 Django 那样对密码进行加盐和哈希处理。
vBulletin 是这样做的:
$hash_stored_in_database = md5(md5($plaintext_password) . $salt);