python - 在 MongoDB 中存储加密密码时出现问题

标签 python mongodb flask scrypt

我正在使用此处描述的技术:https://pypi.python.org/pypi/scrypt/

这是我的注册功能的代码:

@app.route('/register', methods=['POST', 'GET'])
def register():
    result = db.users.find_one({"username" : flask.request.form['username']})
    if result is not None:
        return "That User Is Taken :("
    else:
        pw = scrypt.encrypt(random_token(), str(flask.request.form['password']))
        db.users.insert(
            {"username" : flask.request.form['username'],
             "password" : pw
            })
        return "Registration Successful"

但是我收到以下错误:

InvalidStringData: strings in documents must be valid UTF-8: "scrypt\x00\x11\x00\x00\x00\x08\x00\x00\x00\x03\xc3g\xfez\xf3y\x06\x11\x17\x14>\xb3\xc6\x87\xd7\xc0[\x12\xae\x04N/\x1b\xc0SpK]i\n\x1c\x99{\xbeQk~n\xce\xd3\x0b\xcc\x82\xc9B\xcec\xdd\x02 \xa0\t\xda\xc9\xce~\xfd\x9a!\xa9_\xc3\n\xcet\xfd\xaf\xd9\xe0iL\x85\xb9C\x07\xc1VD\xfa\x1d\xb7\xa6\x0f\xa5t\xfao\xa2w\xb8\xd5\xdf\x00\x9f&\x8a\x96\x0e\x9c\rGz\x1a\x80\x1c\xd6\x13T\xea\xc6\x16\x8a^\xc5_W+X86\x14\xc6T\xc4\xa1\x81[N\x14H\xc5\xc4\xab\x192z\xfcD'x\x19X\x8f\xe9m?\xab\xb9\xeb~-\xb2-\x06z\xa4,\x1cS\x82\x8a\xe2!\xe0\x01^\xd0\xc9\x9e\xbc\x94}\xbe\x8c\xbc\x9d"

知道可能发生什么情况以及如何解决它吗?

最佳答案

您的加密调用会返回需要在插入 mongodb 之前编码为 UTF8 的字节。调用 unicode(pw, "utf-8") 进行转换。

关于python - 在 MongoDB 中存储加密密码时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18648728/

相关文章:

mongodb - 如何检查数组字段是否是 MongoDB 中另一个数组的一部分?

python - flask-security 通过用户名而不是电子邮件登录

python - 使用多个用户类实现 Flask-Login

python - 在 cherokee 和 uwsgi 上部署 Flask

python - 需要在 python 中使用正确的格式在控制台输出中打印 bool 值

python - Python如何观察Mongodb的Oplog变化

python - 遍历文件夹中的文件

MongoDB 仲裁者 AWS EC2

python - 多参数函数的 scipy.misc.derivative

python - 如何在 64 位 Linux 中构建 32 位 pypy JIT?