ValueError:格式错误的sha256_crypt哈希值(校验和必须正好是43个字符)

时间:2018-01-11 08:58:43

标签: python database flask sha256 password-encryption

我对此错误提出疑问。我对瓶子,数据库和sha256_crypt相对较新,所以我希望有人可以轻松地帮助我。

我已经创建了一个登录页面,当我尝试使用正确的用户名登录时,我总是在我的浏览器中收到此错误,当密码正确且错误时。

错误:

  

" builtins.ValueError    ValueError:格式错误的sha256_crypt哈希(校验和必须正好是43个字符)"

代码,我认为问题应该是:

@app.route('/login', methods=['GET','POST']) 
def login():
    if request.method == 'POST':
    #get form fields
    username = request.form['username']
    password_candidate = request.form['password']

    #create cursor 
    cur = mysql.connection.cursor()

    #get user by username
    result = cur.execute("SELECT * FROM users WHERE username = %s", [username])

    if result > 0:
        #get stored hash
        data = cur.fetchone()
        password = data['password']

        #compare passwords 
        if sha256_crypt.verify(password_candidate, password):
            app.logger.info('PASSWORD MATCHED')
        else:
            app.logger.info('PASSWORD DOES NOT MATCH')

    else:
        app.logger.info('NO SUCH USER FOUND')



return render_template('login.html')

我已经搜索了很多,但我似乎无法找到如何修复它,并且可以使用数据库中的用户名和密码登录。

提前谢谢

Robbe

1 个答案:

答案 0 :(得分:1)

据我所知,您正在使用sha256_ crypt来加密您的密码。这将至少需要数据库中至少100个字符。可能是您的数据库无法保存您发送给它的所有字符。