checkpw (пароль, hashed_password) функция bcrypt принимает кодированные входы.
Ваши два параметра, пароль и hashed_password, если они в Unicode, должны быть закодированы. Это то, что вы сделали.
Однако параметр «пароля», который вы задали своей функции, кажется, уже закодирован как интерпретатор Python, передавший эту ошибку AttributeError.
Проверьте эту рабочую реализацию:
import bcrypt
password = "asd123"
hashed_password_encoded = bcrypt.hashpw(password.encode('utf8'), bcrypt.gensalt())
hashed_password = hashed_password_encoded.decode("utf8")
is_valid = bcrypt.checkpw(password.encode('utf8'), hashed_password.encode('utf8'))
print(is_valid)