python - 与 flask 一起使用的 django 1.10 密码

标签 python django encryption

我有一个 Django 项目,我想将其转移到 Flask 中。 问题是像 django 一样加密和解密密码。 是否有可能实现与 django 1.10 中相同的加密和解密。那就是我想在 flask 中以与使用 django 相同的方式创建和验证密码。谷歌搜索给了我 passlib 但文档不清楚 django 版本(1.10)。谢谢。

最佳答案

(此处为 Passlib 开发人员)

Passlib 应该绝对能够处理这种情况,让我知道文档的哪些部分不清楚,我可以尝试清理它们! (最新文档位于 http://passlib.readthedocs.io/en/stable/ )

这应该有助于您入门(假设 passlib >= 1.7)。

处理事情的最简单方法是创建一个 CryptContext 实例,配置数据库中的所有哈希格式。它将从那里负责散列和验证。

对于 Django 1.10,您可能需要如下内容:

>>> from passlib.context import CryptContext
>>> pwd_context = CryptContext(
        default="django_pbkdf2_sha256",
        schemes=["django_argon2", "django_bcrypt", "django_bcrypt_sha256", 
                 "django_pbkdf2_sha256", "django_pbkdf2_sha1",
                 "django_disabled"])

您可以将上面的“默认”调整为您希望新哈希使用的任何方案——甚至可以将非 django 哈希格式(如“bcrypt”)插入列表中。您还可以删除数据库中不存在的任何内容。

一旦上下文对象存在,只需调用 .hash() 来散列密码,自动生成盐值:

>>> hash = pwd_context.hash("foo")
>>> hash
'pbkdf2_sha256$29000$uzyeK0HKJIBR$XQtpjc9nfTdteF1fpk1Jk7FCePwB7S2JLuggiE8UBE4='

然后进行以下验证散列:

>>> pwd_context.verify("foo", hash)
True
>>> pwd_context.verify("bar", hash)
False

passlib 的 CryptContext tutorial 中有更多详细信息如果你需要的话。

关于python - 与 flask 一起使用的 django 1.10 密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40949183/

相关文章:

sql-server - Sql Server Rijndael加密解密

c# - 加密 JWT token

django - 如何输入hint以便pycharm可以自动完成局部变量?

python - MEDIA_URL 元组

python - 在 django rest 框架中对 ModelViewSet 的 PATCH 请求 - 我如何实现 serializer.update()?

firebase - 是否有必要在将聊天消息存储到 Firebase 之前对其进行加密?

python - 读取 csv 文件并对特定行执行公式

python - 在 Windows 上使用 Python 3.7 安装 pycairo

python - Tkinter:模糊透明背景帧

Python discord.py 安装