python – ‘bytes’对象没有属性’encode’

在将每个文档插入集合之前,我正在尝试存储salt和哈希密码.但在编码salt和密码时,它显示以下错误:

 line 26, in before_insert
 document['salt'] = bcrypt.gensalt().encode('utf-8')

AttributeError: 'bytes' object has no attribute 'encode'

这是我的代码:

def before_insert(documents):
    for document in documents:
        document['salt'] = bcrypt.gensalt().encode('utf-8')
        password = document['password'].encode('utf-8')
        document['password'] = bcrypt.hashpw(password, document['salt'])

我在virtualenv中使用eve框架和python 3.4

解决方法:

你正在使用:

bcrypt.gensalt()

 
此方法似乎生成一个字节对象.这些对象没有任何编码方法,因为它们仅适用于ASCII兼容数据.所以你可以尝试不用.encode(‘utf-8’)

Bytes description in python 3 documentation

上一篇:php – 使用sha-512的密码存储,hash()或使用blowfish(bcrypt)的crypt()?


下一篇:php – 从password_hash()确定salt