Почему Bcrypt продолжает терпеть неудачу с MySQL, и как я могу получить хэш? - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь взять пароль из 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)

Неудачно каждый раз, когда ложь, когда ожидается истина

...