1

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

我已经尝试了明显的,将 Django 用户的密码更改为;

md5$vb's_salt$vb's_password

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

有任何想法吗?

4

3 回答 3

2

您可以手动从 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 )

于 2011-01-30T23:23:07.813 回答
1

显而易见的第一个问题:您是如何更改用户密码的?您需要将 algo$salt$password 字符串直接放入数据库。

vBulleting 可能使用另一种方法从密码和盐创建密码哈希。如果是这种情况,您可能必须实现另一种登录方式,以不同方式检查用户密码,然后将其存储为 Django 格式。

于 2011-01-30T23:04:21.997 回答
1

vBulletin 不像 Django 那样对密码进行加盐和哈希处理。

vBulletin 是这样做的:

$hash_stored_in_database = md5(md5($plaintext_password) . $salt);
于 2011-02-01T15:09:52.613 回答