【问题标题】:Convert hashed password to string werkuzeug python将散列密码转换为字符串 werkuzeug python
【发布时间】:2017-01-14 20:16:25
【问题描述】:

我正在使用 Werkzeug 进行密码散列,以便用户输入的密码是安全的(至少)。

假设我的应用程序如下:

当用户登录时,我将使用 check_password_hash 然后登录用户。

用户登录后,我想向他们显示他们的密码。

我遇到的问题:

如何将散列密码转换回字符串以向用户显示他们的密码?

我的代码如下:

>>> import werkzeug.security as ws
>>> ws.generate_password_hash('abcdefg')
'pbkdf2:sha1:1000$fYAXLNA6$637528ae2fa195304c328d585e805b164f1c718f'
>>> ws._hash_internal('pbkdf2:sha1:1000', 'fYAXLNA6', 'abcdefg')
('637528ae2fa195304c328d585e805b164f1c718f', 'pbkdf2:sha1:1000')

现在如何将这个 '6375.....' 转换回 'abcdefg'?

我可以访问数据库和所有其他所需的东西。基本上我是管理员!

注意:我不能使用用户在登录时输入的密码。我只能使用数据库中的密码。

【问题讨论】:

  • 为什么要向用户显示密码?
  • 其实密码并没有显示给用户,这个密码会被用来抓取另一个网站(vtop.vit.ac.in/parent/parent_login.asp),自动获取用户的考勤,不需要输入所有的DOB,手机号码的东西,我将存储一个会话,每当用户登录时,他们就可以检查他们的出席情况。
  • 我明白了,这是一个不同的问题。你应该在你的问题中说清楚,否则我的答案是通常的答案。您需要编写自己的密码管理器。他们通常做的是用主密码加密数据,但问题是使用什么主密码。

标签: python security hash werkzeug


【解决方案1】:

用户登录后,我想向他们显示他们的密码。

散列密码的全部目的和原因是你永远不能这样做。不是你,不是其他任何人。

如果有人使用密码列表访问或窃取数据库,将哈希转换回原始密码真的非常非常昂贵。您将需要一百万年的时间来破解和反转一个密码。

【讨论】:

  • 那么有什么解决方案可以代替使用密码散列,我可以在不影响安全性的情况下实现这一点?
【解决方案2】:

使用散列法时,我们无法取回原始文本。通常,所有密码都存储为哈希值,以使密码私有(只有用户知道)。所有的服务器都实现了这一点。如果要取回密码,则应使用对称密钥加密。在客户端和服务器之间共享密钥的地方(但这是一种非常糟糕的做法)最好使用散列。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-21
    • 2019-07-12
    • 2020-11-30
    • 2014-01-09
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 2010-12-21
    相关资源
    最近更新 更多