Python & Bcrypt: правильный пароль не расшифровывается - PullRequest
0 голосов
/ 05 июля 2019

Я создаю веб-сайт для школьного проекта, который, помимо прочего, позволяет пользователям входить в систему. Данные пользователя хранятся в базе данных sqlite, включая хешированные пароли (от bcrypt). Сайт работает на Flask / Python.

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

bcrypt.check_password_hash (пароль_базы_данных, пароль)

возвращает False.

Я попытался изменить db_password и пароль, но я получаю сообщение об ошибке «недопустимая соль».

Код, в котором хэшируется пароль:

hashed_password = bcrypt.generate_password_hash(password1).decode('utf-8')

Код для входа в систему:

if not bcrypt.check_password_hash(db_password, password):
    print("Incorrect password.")
    return redirect('login/incorrect')

session['user_id'] = user_id
session['username'] = username
return redirect('/')

Этот код, если используется правильный пароль, возвращает редирект ('/'), но я продолжаю получать перенаправление возврата ('логин / неверный').

-

Edit:

Я удалил базу данных и создал новые учетные записи, чтобы убедиться, что пароль правильный. Работал пользователь с именем «1» и паролем «1». Пользователь с именем 't' с паролем 't' не работает. Пользователь с именем 'test' с паролем '0' также работает. Пароль '2.0' также работает, но я проверил - Python обрабатывает переменную password как строку, даже если это число.

...