Как проверить пароли, созданные с помощью Django (make_password) без Django - PullRequest
0 голосов
/ 23 марта 2020

Я использовал Django и обработал пароль с make_password и check_password.

, однако я могу изменить структуру на fastapi.

С fastapi Мне нужно проверить пароли, созданные Django, потому что я должен использовать ту же базу данных с данными.

Как я могу обрабатывать пароли способом, совместимым с Django?

Формат пароля хранится в базе данных примерно так: 'pbkdf2_sha256$100000$Dl6Atsc1xX0A$0QFvZLpKdcvcmCNixVCdEA5gJ67yef/gkgaCKTYzoo4='

Ответы [ 2 ]

1 голос
/ 23 марта 2020

Этот документ описывает, как Django хранит пароли:

https://docs.djangoproject.com/en/2.2/topics/auth/passwords/

Я делаю нечто похожее на то, о чем вы говорите с Node.js бэкенд. Вы можете разделить символ $, чтобы получить части, необходимые для проверки пароля. Вот фрагмент того, что я сделал:

const [, iterations, salt,] = hash.split('$');
const algorithm = 'pbkdf2_sha256';
salt = (salt === '') ? makeSalt() : salt;
const key = crypto.pbkdf2Sync(password, salt, iterations, 32, 'sha256');
const rtnval = algorithm + '$' + iterations + '$' + salt + '$' + key.toString('base64');

Это должно дать вам то, что вы можете использовать для сопоставления с записью в базе данных для данного пользователя.

0 голосов
/ 23 марта 2020

Я нашел passlib поддержку Django совместимым способом.

from django.contrib.auth.hashers import make_password
from passlib.handlers.django import django_pbkdf2_sha256

password = 'testpassword123'
django_hash = make_password(password)   
is_verified = django_pbkdf2_sha256.verify(password, django_hash)

if is_verified:
  print('Correct!!')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...