python - 计算用户密码和随 secret 码的熵

标签 python random passwords entropy

在计算用户密码的熵时,使用的标准方法是什么?似乎每个人都对使用什么有自己的看法。一些人引用了 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 libraryChecking 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/

相关文章:

c++ - 在类中使用 std::chrono::high_resolution_clock 播种 std::mt19937 的正确方法是什么?

php - 当我使用 php 连接时,我的数据库密码是否暴露?

ruby-on-rails - rails : Password can't be blank with has_secure_password

尝试读取图像元数据时,Python XMP Toolkit 过于严格 ("Unrecognized TIFF prefix")

python - 如何从多行字符串中提取特定信息

c++ - 如何在同一个程序/函数中每次生成不同的随机数集?

ios - 与 KeyChain 相比,NSUserDefaults 的安全性如何

python - Setuptools 无法使用来自 dependency_links 的链接

python - 使用上下文管理器从 celery 的 SoftTimeLimitExceeded 中恢复

python - 预测选择/有界兰特