问题标签 [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.
mysql - passlib 校验和不使用 MySQL 的 SHA2 进行验证
我正在使用 vernemq 使用 SHA256 算法从数据库中授权用户。我观察到使用内置 mqsql 函数在表中创建新条目时SHA2
,
它会生成类似这样的哈希值,54d0e30d0a00d86451a3353a2123fc1f006faaba6b55ef0d168390f26cbab82a
并且 Vernemq 服务器在使用CJJPL9
密码登录时成功验证了该用户。
但是,当我使用 passlib 库从 python 代码中将此条目添加到此表中时sha256_crypt.encrypt("CJJPL9")
,它会生成如下哈希
$5$rounds=80000$wnsT7Yr92oJoP28r$cKhJImk5mfuSKV9b3mumNzlbstFUplKtQXXMo4G6Ep5
。我知道,由于 salt,哈希值会有所不同,但是两种哈希值的格式存在明显差异,因此,verneMQ 服务器无法验证该用户的凭据。passlib 库的格式表明它只保留 256 位校验和的 43 个字符。我还尝试通过仅保留 passlib 哈希字符串的校验和部分来进行测试,但仍然没有运气。
我想知道 MySQLSAH2("CJJPL9", 256)
和sha256_crypt.encrypt("CJJPL9")
.
python - 在 Flask 中使用 passlib 的正确方法
我使用 Python 和 Flask 创建了包含姓名、电子邮件、密码和确认密码字段的注册页面。为了以加密格式将密码存储在数据库中,我选择了passlib。根据文档,我已经达到了此代码不起作用的地步:
但这有效
虽然我不确定这是否是正确的方法。我会很感激一些建议。
json - 为什么在加密和解密 JSON 文件时 Pycryptodome MAC 检查失败?
我正在尝试使用散列密码作为密钥来加密一些JSON
数据。我想将数据存储在一个文件中,能够加载、解密、更改、加密、存储和重复。AES-256
pbkdf2_sha256
我正在使用passlib
和pycryptodome
库python 3.8
。以下测试发生在 docker 容器内并引发我无法纠正的错误
有没有人知道如何改进我的代码(和知识)?
测试.py:
输出:
研究:
调查了这个答案,但我相信我的
verify()
电话是在正确的地方我注意到在 python 文档中,它说:
load(dumps(x)) != x 如果 x 有非字符串键。
但是,当我重新运行测试时,
dictTest['test'] = 'a'
我遇到了同样的错误。我怀疑问题出在 json 格式上,所以我用一个字符串做了同样的测试,没有进行
json.loads
andjson.dumps
调用,但我有同样的错误
java - 使用 python passlib 兼容 Spring 的 scrypt 密码
如何从 python 生成与 Spring 兼容的密码?
我有一个 spring 应用程序在数据库中创建 scrypt 密码,如下所示:
{scrypt}$e0801$QAqC0fvhY6iJPysiQsFnrcUg205njHo/6o+IDXDn33lxmZOCVBhb4NAqdafhuGmykCxQtMI5xP5zb7MYMUrU3Q==$sBeXCHOm6zQuGdSDKs+HeXnNQGg3bhRidmL+HU/ZTMM=
我正在尝试使用 python 和 passlib 直接使用新密码更新数据库,但无法从以下位置预测 passlib 的正确 setting_kwds $e0801$
:
手动摆弄前缀格式没有奏效:
我认为(但不确定)Spring 正在使用默认的 SCryptPasswordEncoder 设置,因为我发现:
春季版:
谢谢!
python - TypeError:“_PasslibRegistryProxy”对象在网站上不可调用 Passlib/Python 错误
今天早上在用户创建/登录的项目站点上工作。该代码在本地主机上运行良好。我将代码推送到我的 heroku 帐户并离开了这一天。今天晚上我回到家开始测试网站。我遇到了一个我没有准备好的例外。启动 localhost 并重新创建了问题,TypeError: '_PasslibRegistryProxy' object is not callable
现在我不知道如何解决它。看来,在 git 添加、提交和推送的过程中,我破坏了我的 passlib 文件。然而,我没有编辑 passlib 的源代码。此外,我在一个全新的工作区中用最少的代码重新创建了错误。完全新的硬盘驱动器,新文件夹,运行pip install passlib -t .
(强制安装到该目录)。我运行了以下 3 行代码并继续收到相同的错误:
在我的主要工作区中,我尝试pip install passlib --upgrade -t .
过,但这并没有解决我的问题。而且我正在使用passlib.hash()
而不是sha256_encrypt()
由于已弃用的消息。
我完全糊涂了,因为它工作正常,除了尝试解决它之外,我没有对该代码进行任何更改。
python - 为 passlib.hash.scrypt 使用自定义 Base_64 字典
在 passlib 中编码数据时是否可以指定自定义 Base_64 字典?
我需要在不允许在其配置文件中使用“+”字符的系统上生成“scrypt”编码密码。
更具体地说,使用的自定义字典是 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
反对标准字典='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
使用代码:
它偶尔会输出我的系统不支持的“+”字符。
你的哈希是:$o/ReK+U8JyRkbA$W6zFHBmebC4LwkTN+rB8kSgUbDK0Zo4p2z7CCwvJOXk
如果我没记错的话,字符也必须在字典中的正确顺序。
有没有办法用 passlib 指定自定义字典?还是有更好的方法来实现这一目标?
'salt' 也使用相同的标准字典进行编码,这也需要使用自定义字典。
-布雷特
python - 在烧瓶中安全地实现两因素身份验证
我有flask-login
一个SQLAlchemy
数据库来验证用户登录尝试。但是将用户名和密码输入与基于令牌的 totp 合并一直是我的问题所在。我passlib
用于管理 totp 身份验证,该身份验证具有存储在数据库用户模型中的令牌生成器。
我首先想到将所有输入字段放在同一页面上。这意味着用户在访问登录页面时需要填写三个字段:用户名、密码、totp 令牌。
但我希望 totp 令牌显示在单独的页面上。所以,我随后将登录页面剪成了两页。一个用于用户名和密码,另一个用于 totp 令牌。
我想通过第一页获取用户的登录用户名和密码,然后将其与 db 匹配以查看它们是否正确以及它们在哪里,它们将被路由到带有 totp 令牌输入的另一个页面。此页面将获取令牌输入并使用从用户在上一页中输入的数据库令牌生成的验证它。
正是在为 2fa 创建这样一个单独的路线时,我的所有问题都出现了。例如,
如果他们尚未通过登录页面并成功输入正确的凭据,您必须确保没有人可以访问 2fa 页面。
您还必须将有关谁从登录页面经过身份验证的信息持久保存到 2fa 页面中,以便可以使用数据库中的正确用户验证令牌输入。
而且我不知道如何坚持知道谁经历了第一个登录步骤到第二个步骤。我首先想到的是在用户成功完成第一次登录过程时使用会话存储来存储用户的 id,以便第二条路由可以获取该会话并识别谁在进行身份验证。但随着饼干的出现。这不是那么安全。
那么如何在 Flask 中安全地实现基于多页令牌的两因素身份验证呢?
python - 使用 passlib 可以注册密码但无法再次验证它得到错误
我正在使用 passlib 将密码存储在我的 sqlite 数据库中。存储新密码(注册)时我没有收到错误。但是,当我尝试使用同一用户登录时,我收到此错误“TypeError:哈希必须是 unicode 或字节,而不是 sqlalchemy.orm.attributes.InstrumentedAttribute”。
我的剧本
我创建了名为 security.py 的新文件
在登录方法中,我尝试了不同的方法,但没有任何效果。我尝试在这里传递密码。
password_check = check_encrypted_password(password1,password)
但我收到了这个错误
我应该如何验证我的密码和登录?
python - 快速单向和安全的散列算法
我一直在使用现有的散列算法来散列使用基本身份验证进行身份验证的小型微服务的密码。
根据社区标准,我选择 bcrypt 算法来散列密码。但是在使用 Apache Benchmark 对服务器进行基准测试后,我发现 90% 的 CPU 周期都用于验证密码。给出一个上下文,一个 t3.large 能够在没有身份验证的情况下处理 60 个请求/秒,而在使用身份验证逻辑的情况下只能处理 6 个请求/秒。
我想过使用 python 中可用的 passlib 库进行基准测试,这里是使用 passlib 和默认设置进行 100 次迭代的结果 -
我知道在幕后进行了多轮讨论。将 sha256 的轮数更改为 1000 后,出现了显着差异 -
所以我的问题是 -
对于使用基本身份验证而不是基于令牌的身份验证或任何其他方式的小型微服务,我想问一下最佳方法是什么,以便密码安全地驻留在托管在亚马逊服务器上的多级安全数据库中?
python - 我将如何验证用户输入的密码与哈希密码表单数据库相同
当我运行代码并输入一个旧的并且没有经过哈希处理的密码时,它告诉我它是元组,这不是问题,但是当我尝试验证一个哈希密码时,我发现我的密码是错误的,所以我想知道是什么我的代码错了。我是 python 新手,对 mysql 没有超级经验,但我认为问题在于我如何选择散列密码并执行 if 语句。
'''
''' 以上是我认为问题出在标签/评论的地方,因为我已经按照教程进行学习,现在我尝试在此基础上进行构建,这就是我现在卡住的地方
这就是我散列它的方式,我相信它是正确完成的:'''
我可以在数据库中看到用户使用散列和加盐密码注册。谢谢你的帮助 :)