问题标签 [passlib]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 使用uwsgi时无法导入passlib
我正在使用flask-restful并想使用来自passlib的bcrypt来散列存储在数据库中的用户密码,当我运行解决方案时python3 app.py
,一切正常,我可以散列密码并验证它们,但是当我通过uwsgi运行解决方案时uwsgi uwsgi.ini
尝试进行身份验证时出现内部服务器错误。
当我查看日志文件from passlib.hash import bcrypt ImportError: No module named 'passlib'
时,虽然我也可以从命令行成功导入它。
我尝试执行以下建议的一种解决方案:
并添加“#@UnresolvedImport”以导入但仍然无效。
flask - ValueError:在登录期间验证散列密码时不是有效的 sha256_crypt 散列
尝试验证用户密码时,我的烧瓶应用程序中出现服务器 500 错误。
我正在运行两个相同的烧瓶应用程序,一个在我的本地 ubuntu 系统上,一个在 linode 服务器上。
在本地系统上,我在内置的开发服务器上运行它,在远程系统上,我使用 apache2 和 mod-wsgi。
用户数据独立地存储在每个系统上的 postgresql 数据库中。
在本地系统上,一切都按预期在远程系统上运行,但出现错误。从下面的error.log中提取:
这是我的登录页面中引发错误的行:(userdata[2] 是我的数据库的用户表的密码列)
在registration.page上,我像这样对密码进行哈希处理,然后将其存储到数据库中:
这是我的烧瓶应用配置:
这是我的 .wsgi - 文件:
我不明白为什么它在本地系统上运行良好而不是在远程系统上运行良好。
任何可以查看的提示将不胜感激。
python - 使用 passlib 验证带有 £ 或 $ 字符的密码失败
我将 passlib==1.7.1 与以下导入一起使用:
然后使用以下内容对密码进行哈希处理:
pwd_context.encrypt(password)
然后我验证:
这很好,但是某些字符的验证失败。例如“£”或“$”。
请问有谁知道为什么会这样?
谢谢!
更新:
非常感谢大家。有了这些信息,我进行了更多调查,似乎问题不是 passlib,而是位于 angular4 之间的某个位置,我将 base64 授权标头发送到烧瓶应用程序。
我目前正在使用以下内容来执行此操作:
我今天读了很多关于 unescape 的内容(它是对 decodeURI() 的贬值)。我还阅读了很多关于 base64 编码中对 unicode 的支持。我尝试了这些东西的多种组合,但没有任何区别。我现在真的很困惑!
为了测试发生了什么,我执行以下操作。在 angular4 中,我执行以下操作:
正如预期的那样,这会将以下内容打印到控制台。
所以编码和解码显然没问题。
在 Python 中执行相同的过程...
我在终端中得到以下信息。
我注意到“ZG91ZzpUcmVlozk=”和“ZG91ZzpUcmVlwqM5”不一样。但是,这两种方法都适用于它们自己的语言。
如果我将 "ZG91ZzpUcmVlozk=" 编码字符串从 javascript 放入 python 并解码如下......
我得到:
请注意,£ 字符现在已被捣碎。
其他 Unicode 字符也失败了。
所以我认为问题是如何对 Authorization 标头进行编码,以便 python 正确识别 £ 字符,以及用户为密码选择的任何其他字符?
非常感谢!
编辑:已解决!
我发现这个Using Javascript's atob to decode base64 doesn't proper decode utf-8 strings这涉及到一些细节。我使用@brandonscript 推荐的以下方法解决了这个问题。
完美运行!呸!
flask - TypeError: hash must be unicode or bytes, not builtin_function_or_method
我正在尝试对 Flask 应用程序实施JWT授权。但是,当我尝试登录时,它返回一个"500 Internal server error"
带有“TypeError:哈希必须是 unicode 或字节,而不是 builtin_function_or_method”。我会在这里错过什么。
这是我的models.py课程
这是我的登录方法
这是错误
python - ValueError:格式错误的 sha1_crypt 哈希(校验和必须正好是 28 个字符)
我是编程新手,我尝试制作一个身份验证程序,使用 passlib 将密码和用户名存储在 .txt 文件中:
但是当我尝试在我的 password.txt 文件中验证我的散列密码时出现此错误:`Traceback(最近一次调用最后一次):
注册我做得很好,但部分登录没有。代码:`
预先感谢您提供的任何帮助!
python - 使用 passlib.pbkdf2_sha256.verify 破解哈希
我们有一组哈希值,我们想将它们与著名的rockyou.txt中包含的密码进行比较。
我们编写了一个代码,它迭代地将 rockyou.txt 中的每个条目转换为哈希,并将其与我们的单个哈希进行比较,使用:
问题是我们必须将 rock you 中的全部 1500 万个条目转换为哈希值,以检查我们拥有的单个哈希值。因此,如果我们有 1000 个散列,我们必须计算散列 1000 * 1500 万次。
有没有办法存储一次转换的 1500 万个哈希值并利用它来破解所有哈希值?
django - 使用 PassLib 验证来自 Flask 用户密码的哈希
我目前正在尝试将我的 Flask 用户迁移到 Django 后端。
但是,当我使用 passlib 验证哈希时,我无法弄清楚为什么它不会验证。
我们的烧瓶应用设置
我从数据库中提取的哈希示例
flask_hash = "$pbkdf2sha512$12000$ZQyhNEbIOSfk/J/T2vs/Bw$j.yxtixV.DqAcpsY9XTnJZZb3lCkR2fMWmV329Uc7Y/vz5Z0yMshEkYlUsE2Y9xm8TICwYkG55RgAplzZzLl7g"
所以我用 passlib.hash import pbkdf2_sha512 的圆和盐创建了一个自定义 pbkdf2_sha512
但是如果我创建一个新的哈希......它确实有效
有什么我想念的吗?非常感谢您在这里提供的任何帮助……我知道密码——这是我用于测试的虚拟帐户。
python - 警告:找不到包文件夹或虚拟环境。ModuleNotFoundError:Azure 应用服务中没有名为“xxxxx”的模块
在 Azure 应用服务中部署到 linux 的 Python 应用程序中出现以下错误。
如果我使用熊猫,它也是一样的,所以似乎与图书馆无关。
尽管我已将该文件添加到我的 requirements.txt 中,但它并未作为安装的一部分运行。
环境是 Azure 应用服务上的 Linux。这些是我遵循的步骤,
https://code.visualstudio.com/docs/python/tutorial-deploy-app-service-on-linux
我尝试使用 Kudo BASH 连接到环境,但是在检查 python 版本时,它的 2.7 而不是每个部署的 3.7。我想知道我是否在主机操作系统中,而不是在托管站点的 docker 容器中。(错误/问题?)。我可以在 /home/site/wwwroot 下找到部署,并且我尝试使用 pip 安装 requirements.txt。由于它不是网站上运行的 pyton 版本,我认为这就是它失败的原因。它将收集库但不再继续。
我无法 SSH,这似乎已关闭,它永远无法连接到该站点。
我已经尝试了开发和生产计划。
我不想部署自己的 docker,因为目标是让 MS 管理整个环境的补丁。
python - 如何在 passlib 上下文 python 中修复散列值的长度?
我正在使用下面的代码来加密密码。
当我调用encrypt_password('password')
函数时,它会将我的密码加密为哈希值并给我如下输出..
加密密码哈希值的输出值太长。我想获得固定大小的输出,例如“30 个字符或 40 个字符”。如何获得固定大小的输出。?谁能帮我理解这一点。
谢谢你 !
python - 如何确保 RNG 熵池对于使用 passlib 生成密码是“安全且完整的”?
在查看使用 Python 的 passlib 模块时,文档 [1] 带有生成密码的警告,内容为..
警告:在使用这些例程之前,请确保您系统的 RNG 熵池是安全且已满的。还要确保使用足够高的熵参数调用 genword() 或 genphrase() 以达到密码的预期目的。
然而,它没有提到这是如何实现的。在实践中,我的理解是熵池会逐渐填充,通常是通过键盘/鼠标输入,但是对于无头服务器来说,这是如何实现的,以及在调用 genword/genphrase 函数之前如何确保它是安全/完整的?
[1] https://passlib.readthedocs.io/en/stable/lib/passlib.pwd.html