Использование PassLib для проверки хэша от паролей пользователей Flask
В настоящее время я пытаюсь перенести пользователей Flask на серверную часть Django.
Однако, когда я использую passlib для проверки хеша, я не могу понять, почему он не проверяет.
Наши настройки фляги
SECURITY_PASSWORD_HASH = "pbkdf2_sha512"
SECURITY_PASSWORD_SALT = "stackru" # this is an example
Пример хеша, который я извлек из базы данных
flask_hash = "$pbkdf2sha512$12000$ZQyhNEbIOSfk/J/T2vs/Bw$j.yxtixV.DqAcpsY9XTnJZZb3lCkR2fMWmV329Uc7Y/vz5Z0yMshEkYlgsglg5glg5
Таким образом, я создал пользовательский pbkdf2_sha512 с раундами и солью из passlib.hash import pbkdf2_sha512
rounds = 12000
salt = "stackru".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)
Я что-то упускаю? Огромное спасибо за любую помощь здесь... Я знаю пароль к этому - это фиктивная учетная запись, которую я использовал для тестирования.
0 ответов
Я был поражен точно такой же ситуацией, к счастью, нашел эту ветку Reddit, которая имела объяснение.
По сути, вам нужно убедиться, что пользователь:
from flask_security.utils import verify_password
verify_password(<plain text password>, <password hash>)
Подробнее здесь