Хеширование пароля в Django - PullRequest
0 голосов
/ 31 января 2011

Я пытаюсь интегрировать пользовательские базы данных vBulliten и Django. Я знаю, что vB использует алгоритм md5 для хэширования своих паролей, с солью. У меня есть солт-данные и пароль для каждого пользователя vB, и я хотел бы знать, как импортировать эти учетные записи в Django.

Я попробовал очевидное, изменив пароль пользователя Django на;

md5 $ vb's_salt $ vb's_password

Это просто отбрасывает обратно форму входа в Django, с сообщением «имя пользователя и пароль не совпадают»

Есть идеи?

Ответы [ 3 ]

1 голос
/ 31 января 2011

Вы можете либо обновить пароли из db вручную, либо написать какой-нибудь Python.

Атрибутом пароля объекта User является строка в этом формате:

hashtype$salt$hash

Это хеш-тип, соль и хеш, разделенные символом доллара.

Хеш-тип - это sha1 (по умолчанию), md5 или crypt - алгоритм, используемый для выполнения одностороннего хеширования:пароль.Salt - это случайная строка, используемая для подсчета необработанного пароля для создания хеша.Обратите внимание, что метод crypt поддерживается только на платформах, на которых доступен стандартный модуль шифрования Python.

Например:

sha1$a1976$a36cc8cbf81742a8fb52e221aaeab48ed7f58ab4

set_password () и check_password () функции обрабатывают установку и проверку этих значений за кулисами.

(ссылка: http://docs.djangoproject.com/en/dev/topics/auth/#passwords)

1 голос
/ 01 февраля 2011

vBulletin не солит и не хэширует пароль так же, как Django.

vBulletin делает это так:

$hash_stored_in_database = md5(md5($plaintext_password) . $salt);
1 голос
/ 31 января 2011

Очевидный первый вопрос: как вы поменяли пароль пользователя? Вам необходимо поместить строку algo $ salt $ password непосредственно в базу данных.

Вполне вероятно, что vBulleting использует другой способ для создания хэша пароля из пароля и соли. В этом случае вам, возможно, придется внедрить альтернативный логин, который по-разному проверяет пароль пользователя и затем сохраняет его в формате Django.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...