我目前正在用Python编写密码破解程序,并且正在考虑根据下载的单词列表搜索密码哈希字典的最佳策略。
像rockyou这样的密码列表是按照最常见的密码排序的,所以我最初的方法是按顺序搜索字典,以防我试图破解的哈希值与列表顶部的非常常见的密码相对应。但是,我认为对于不太常见的密码,这种线性搜索可能需要很长时间,因此我正在考虑实施二进制搜索。总体上会更快,还是线性搜索平均更快(考虑到许多密码将位于列表顶部?
对前 100 个左右的密码进行线性搜索,然后在找不到时切换到二叉搜索是否是一个明智的策略?
我完成此任务的方法与您首先检查最常见的密码的方法相同。它的大小将取决于数据库的大小,一些试验和错误不会在这里错过,因为正确的数字我们将取决于密码的随机程度。
对于完整搜索,我会搜索排序的哈希值,因为这通常是最快的。
为什么处理排序数组比处理未排序数组更快?