访问散列密码字典平均最快的方法是什么?

What would be the fastest method on average for accessing a dictionary of hashed passwords?

我目前正在 Python 中编写密码破解程序,并且正在考虑基于下载的单词列表搜索密码哈希字典的最佳策略。

像 rockyou 这样的密码列表是按照最常见的密码排序的,所以我最初的方法是按顺序搜索字典,以防我试图破解的哈希值对应于一个非常常见的密码那是在列表的顶部。但是,我认为对于不太常见的密码,这种线性搜索可能需要很长时间,所以我正在考虑实施二进制搜索。这会整体上更快,还是平均而言线性搜索会更快(考虑到许多密码将位于列表的顶部?)

对前 100 个左右的密码进行线性搜索,如果找不到则切换到二进制搜索是否是一个明智的策略?

我完成这个任务的方法和你一样,先检查最常见的密码。它的大小将取决于你的数据库的大小,这里不会错过一些试验和错误,因为我们将取决于随机密码的正确数字。

对于完整搜索,我会通过 排序的 哈希进行搜索,因为这通常是最快的。

Why is processing a sorted array faster than processing an unsorted array?