在计算用户密码的熵时,使用的标准方法是什么?似乎每个人都对使用什么有自己的看法。一些人引用了 xkcd,其他人提到了 NITH 和 Shannon。
假设我想计算 Rockyou 泄漏中前 10 个密码的熵,我应该使用什么。大多数 Rockyou 密码不是随机生成的。
如果我想计算随机生成的密码的熵,例如通过在网站上重置密码生成的密码,通常长度为 4-6 个字符,只有 a-z、A-Z 字符。
是否有针对这些场景推荐的任何推荐方法的 Python 实现?
最佳答案
根据您对理论和实践的兴趣程度,您可以简单地连接到 xkcd 或 NITH 并获得结果。
关于香农熵和密码:此链接 http://www.alertboot.com/blog/blogs/endpoint_security/archive/2011/11/29/password-strength-entropy-how-those-password-strength-checkers-work.aspx很好地描述了在讨论密码强度时如何使用香农熵。它在某种程度上是对香农原始定理的改编,该定理处理在噪声信道上稳健地传递离散数据。虽然我可以欣赏这种改编,但我觉得它在很多方面都有不足,但这不是这里的重点。
您是否看过这些 SO 帖子:What is the best way to check the strength of a password?或 Password strength checking library或 Checking the strength of a password (how to check conditions)或 Python password strength
我不知道是否有一种确定的方法来计算密码熵。它是那些看起来非常简单的问题之一,但如果没有一些限制性假设,仔细检查就会发现它非常困难。如果您想简单地检查密码是否具有来自各种字符类的 4 类字符中的 3 类,那是微不足道的。从这个意义上说,如果一个密码有更多来自更多字符类别的字符,它就会有更高的熵。但这仍然有很多缺点,因为如何决定 ab!!比aA#3强。前者有 4 个字符,但只有两个字符类,后者有 3 个字符类。如果你想考虑字典单词、反向字典单词、短语,那就更难了……
关于python - 计算用户密码和随 secret 码的熵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22277493/