Django中的密码哈希

时间:2011-01-30 21:47:17

标签: django passwords vbulletin

我正在尝试整合vBulliten和Django的用户数据库。我知道vB使用md5算法来散列它的密码。我有每个vB用户的salt数据和密码,并想知道如何将这些帐户导入Django。

我已经尝试过显而易见的,将Django用户的密码更改为;

MD5 $ $ vb's_salt vb's_password

这只会抛出Django的登录表单,并显示“用户名和密码不匹配”的消息

有什么想法吗?

3 个答案:

答案 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);