У меня есть простое приложение Flask, использующее bcrypt. Я потратил несколько часов на эту простую и удобную библиотеку, чтобы выяснить проблему кодирования. Метод входа в систему вызывает метод doDecideHashedPassword, который затем должен возвращать значение true или false, если учетные данные совпадают.
Также обратите внимание на следующее
- Я использую postgres, и в настоящее время в моем поле пароля установлено значение varchar (500)
- Я конвертирую хешированный пароль в str, чтобы точно сохранить его в базе данных.
Когда я запрашиваю хешированный пароль из базы данных и передаю его через doDecodeHashedPassword ниже, я получаю недопустимую соль. Это принимает адрес электронной почты и пароль из формы.
def doDecodeHashedPassword(self, email, password):
getpwd = ClientUser.query.filter_by(email=email).one()
getpwd = getpwd.password
getpwd = getpwd.encode()
password = password
check_user_integrity = bcrypt.checkpw(password,getpwd)
if check_user_integrity:
return (check_user_integrity)
else:
return False
Почему я получаю недействительную ошибку соли.