【问题标题】:Generate password from input string [closed]从输入字符串生成密码[关闭]
【发布时间】:2015-09-26 17:15:17
【问题描述】:

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

【问题讨论】:

  • 这样做的应用是什么?
  • 我想用它为具有主密码的网站生成密码。我想给它我的主密码和网站名称,它应该为每个网站生成一个唯一且安全的密码。

标签: python security hash


【解决方案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 中的反向端口),这是一种更好的散列(或“派生密钥”,正确地说)密码的方法。

【讨论】:

  • 谢谢你,这可能就是我想要的!
  • 我认为this 可能是您真正想要的。 :)
  • 这确实是我想要的。任何关于我自己实施的提示? O.o
  • 太棒了 :-) 实际上解释得很好here。我认为它也是开源的,所以你也可以阅读他们的代码!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-29
  • 2020-12-11
  • 1970-01-01
  • 2016-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多