Генерация паролей Django SHA1 - PullRequest
2 голосов
/ 10 марта 2011

Мне нужно предоставить доступ к базе данных Django из другого программного обеспечения python, основанного на пользователях, уже созданных в Django. У меня все в порядке с доступом, мне просто нужен кусок кода для генерации пароля Django, как это делает модуль аутентификации администратора.

Каков наилучший способ сделать это? Обратите внимание, что, если возможно, я не хочу иметь весь пакет Django для этого.

Большое спасибо

Ответы [ 2 ]

6 голосов
/ 11 марта 2011

Понял, как это работает.Я написал небольшую функцию для проверки пароля пользователя:

def check_passwd (user, raw_password):
     import hashlib
     # ... get 'hsh_passwd' from database based on 'user' ...
     hsh_passwd = hsh_passwd.split('$')
     salt = hsh_passwd[1]
     hsh = hsh_passwd[2]
     if hsh == hashlib.sha1(salt + raw_password).hexdigest():
         return True
     return False

Конечно, проверок не так много, и они не гибкие, но это то, что я искал.

4 голосов
/ 10 марта 2011

Весь код для создания и проверки пользовательских паролей находится в django.contrib.auth.models.

В частности, посмотрите на методы User.set_password и User.check_password. Вам нужно будет извлечь эти два бита и код Django, на который они ссылаются, чтобы создать и проверить пароли пользователей проекта согласно Django.

...