Bcrypt - 在检查之前必须对Unicode对象进行编码

时间:2017-03-07 23:57:27

标签: python unicode

以下代码引发TypeError: Unicode-objects must be encoded before checking

if request.form['username'] == admin[0][0]:
    if bcrypt.checkpw(request.form['password'].encode('utf-8'), admin[0][1]):
        print('checked')

但代码的这一部分返回True,因此会打印checked

if request.form['username'] == username[0][0]:
    if bcrypt.checkpw(request.form['password'].encode('utf-8'), username[0][1]):
        print('checked')

admin& username是来自SQLite数据库的查询,它们返回一个内部有元组的列表(即[('username')]

两个片段几乎完全相同,两者都被编码。所以我不确定为什么一个有效,另一个没有。

1 个答案:

答案 0 :(得分:0)

对于这两个参数,您可以尝试使用编码为utf-8,并使用带有gensalt的hashpw

,其中

来自SQLAlchemy db的user.password

form.password.data描述了请求中的密码输入

post_content