将哈希密码转换为字符串werkuzeug python

时间:2016-09-07 08:26:01

标签: python security hash werkzeug

我使用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'?

我可以访问数据库以及所需的所有其他内容。基本上我是管理员!

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

2 个答案:

答案 0 :(得分:2)

  

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

哈希密码的全部目的和原因是你永远不能这样做。不是你,不是别人。

如果有人使用密码列表访问或窃取数据库,则将哈希值转换回原始密码确实非常昂贵。您将需要一百万年才能打破并反转一个密码。

答案 1 :(得分:1)

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