Я пытаюсь взять пароль из React Native во Flask через URL, а затем вставить его в MySQL. Затем я извлекаю его из БД и проверяю по паролю. Я пробовал каждую комбинацию создания строк хеша и пароля и кодировал utf8, но я только когда-либо получал ложь, пожалуйста, дайте мне знать, что не так.
мой метод получения пароля, который хэширует и вставляет в БД
@app.route('/signup', methods=['GET'])
def signup():
password = str(request.args.get('password')).encode('utf8')
username = str(request.args.get('username')).encode('utf8')
c.execute("""INSERT INTO profiles
(username, password
)
VALUES
(%s, %s)""", ## gender true==male && false==female
(username, hashed
)
)
con.commit()
Я получаю строку в mysql, похожую на эту (varchar256)
+--------------------------------------------------------------+
| password |
+--------------------------------------------------------------+
| $2b$12$oD607B1ej5qXM/mFcPVdueX8R5zeWNfL39d2oNPuoM3KdUfP8McvO |
+--------------------------------------------------------------+
мой метод восстановления пароля
@app.route('/check_hash', methods=['GET'])
def check_hash():
try:
username = request.args.get('username')
password = str(request.args.get('password')).encode("utf8")
c.execute('select password from profiles where userID = ' + '"' + str(username) +'"')
hashed = (c.fetchone()[0]).encode('utf8')
if bcrypt.hashpw(password, hashed) == (hashed):
return json.dumps('success')
else:
return json.dumps('no')
except Exception as e:
return str(e)
Неудачно каждый раз, когда ложь, когда ожидается истина