【问题标题】:Using PassLib to Verify Hash from Flask User Passwords使用 PassLib 验证来自 Flask 用户密码的哈希
【发布时间】:2019-04-28 12:55:20
【问题描述】:

我目前正在尝试将我的 Flask 用户迁移到 Django 后端。

但是,当我使用 passlib 验证哈希时,我无法弄清楚为什么它无法验证。

我们的烧瓶应用设置

SECURITY_PASSWORD_HASH = "pbkdf2_sha512"
SECURITY_PASSWORD_SALT = "stackoverflow" # this is an example

我从数据库中提取的哈希示例

flask_hash = "$pbkdf2sha512$12000$ZQyhNEbiosfk/J/T2vs/Bw$j.yxtixV.DqAcpsY9XTnJZZb3lCkR2fMWmV329Uc7Y/vz5Z0yMshEkYlUsE2Y9xm8TICwYkG55RgAplzZzLl7g"

所以我用圆和盐创建了一个自定义 pbkdf2_sha512 从 passlib.hash 导入 pbkdf2_sha512

rounds = 12000
salt = "stackoverflow".encode() # assume I swapped this out with the right salt
custom_pbkdf2 = pbkdf2_sha512.using(rounds=rounds, salt=salt)

verify_result = custom_pbkdf2.verify(hash=flask_hash, secret=password)
print (verify_result) # false

但是如果我创建一个新的哈希......它确实有效

test_hash = custom_pbkdf2.hash('testing-if-this-works')
test_hash_confirm = custom_pbkdf2.verify('testing-if-this-works', hash=test_hash)

我有什么遗漏吗?非常感谢您在这里提供的任何帮助……我知道密码——这是我用于测试的虚拟帐户。

【问题讨论】:

    标签: django flask passlib


    【解决方案1】:

    我遇到了完全一样的情况,幸运的是找到了这个reddit thread,它有解释。

    基本上,您需要做的是验证用户:

    from flask_security.utils import verify_password
    verify_password(<plain text password>, <password hash>)
    

    更多详情here

    【讨论】:

      猜你喜欢
      • 2015-11-30
      • 2014-05-26
      • 2015-11-22
      • 2020-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-07
      相关资源
      最近更新 更多