计算用户密码和随机密码的熵

时间:2014-03-09 01:55:30

标签: python random passwords entropy

计算用户密码的熵时,使用的标准方法是什么?似乎每个人都对自己的使用方式有自己的看法。一些参考xkcd,其他人提到NITH和Shannon。

假设我想计算Rockyou泄漏中前10个密码的熵,我应该使用什么。大多数Rockyou密码不是随机生成的。

如果我想计算随机生成的密码的熵,例如在网站上重置密码而产生的密码,通常长度为4-6个字符,只有a-z,A-Z字符。

对于这些场景推荐的推荐方法是否有任何Python实现?

1 个答案:

答案 0 :(得分:2)

根据您对理论与实践的兴趣,您可以做的只是简单地与xkcd或NITH接口并获得结果。

关于Shannon熵和密码:此链接http://www.alertboot.com/blog/blogs/endpoint_security/archive/2011/11/29/password-strength-entropy-how-those-password-strength-checkers-work.aspx提供了在讨论密码强度时如何使用Shannon熵的良好描述。它在某种程度上是香农原始定理的一种适应,它处理在噪声信道上稳健地传递离散数据。虽然我可以欣赏这种适应性,但我觉得它在很多方面都不尽如人意,但这不是重点。

您是否看过这些SO帖子:What is the best way to check the strength of a password?Password strength checking libraryChecking the strength of a password (how to check conditions)Python password strength

我不知道是否有一种确定的方法来计算密码熵。这些问题看起来非常简单,但经过仔细研究后,如果没有一些限制性假设,则会出乎意料地难以理解。如果您只想检查密码是否包含来自各种字符类别的4种类别中的3种字符,这些字符很简单。从这个意义上讲,如果一个密码有更多来自更多字符类的字符,那么它将具有更高的熵。但这还有很多缺点,因为如何决定是否ab !!比aA#3强。在前者中它是4个字符但只有两个字符类,在后者中有3个字符类。如果你想考虑字典单词,反向字典单词,短语那就更难了......