从输入字符串生成密码

时间:2015-07-08 16:39:56

标签: python security hash

有没有办法从输入字符串生成密码,以便结果始终相同?像md5哈希,但有特殊字符?

1 个答案:

答案 0 :(得分:1)

为什么你会有特殊字符?

特殊字符被添加到密码中以增加其熵,但哈希将永远不会增加熵,因为它仅取决于输入。

例如。如果您知道special_characters_password_generator()函数的输入始终是0..255范围内的数字,那么无论如何,输出中只有8位熵。或者换句话说,无论如何,您将始终生成256个密码中的一个。这样做的一个原因是具有人类可读但更紧凑的表示。

也许您想要使用比0-9A-F更多的字符来表示散列(毕竟只是一个位序列),例如,您可以使用base64模块对您的输出进行编码哈希函数:

import hashlib, base64
print base64.b85encode(hashlib.sha256(b"hello world").digest())
# output: b'xlJdzlTAJdr7lv}+I_3~#DwqTdQ*VzkcjuJ;_uDr'

在较新版本的hashlib中找到更好的散列方法(或“衍生键”,更正)密码pbkdf2_hmac(也可作为pip中的后端)。