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