Использование PassLib для проверки хэша от паролей пользователей Flask - PullRequest
0 голосов
/ 26 ноября 2018

В настоящее время я пытаюсь перенести пользователей Flask на серверную часть Django.

Однако, когда я использую passlib для проверки хэша, я не могу понять, почему он не будет проверять.

Наши настройки приложения фляги

SECURITY_PASSWORD_HASH = "pbkdf2_sha512"
SECURITY_PASSWORD_SALT = "stackoverflow" # this is an example

Пример хэша, который я извлек из базы данных

flask_hash = "$ pbkdf2sha512 $ 12000 $ ZQyhNEbIOSfk / J /T2vs / Bw $ j.yxtixV.DqAcpsY9XTnJZZb3lCkR2fMWmV329Uc7Y / vz5Z0yMshEkYlUsE2Y9xm8TICwYkG55RgAplzZzLl7g "

Так что я создал пользовательский pbkdf2_sha512 с раундами и соли из passlib.hash импорта pbkdf2_sha512

rounds = 12000
salt = "stackoverflow".encode() # assume I swapped this out with the right salt
custom_pbkdf2 = pbkdf2_sha512.using(rounds=rounds, salt=salt)

verify_result = custom_pbkdf2.verify(hash=flask_hash, secret=password)
print (verify_result) # false

Но еслиЯ создаю новый хэш ... он работает

test_hash = custom_pbkdf2.hash('testing-if-this-works')
test_hash_confirm = custom_pbkdf2.verify('testing-if-this-works', hash=test_hash)

Есть что-то, что я пропускаю?Большое спасибо за любую помощь здесь ... Я знаю пароль к этому - это фиктивная учетная запись, которую я использовал для тестирования.

1 Ответ

0 голосов
/ 22 марта 2019

Я был поражен точно такой же ситуацией, к счастью нашел эту ветку reddit , в которой было объяснение.

По сути, вы должны подтвердить, что пользователь:

from flask_security.utils import verify_password
verify_password(<plain text password>, <password hash>)

Подробнее здесь

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