多线程强力密码破解算法

Phi*_*l-R 3 c++ algorithm multithreading brute-force

我在C++中创建了一个多线程程序,使用强力算法来破解长度为7个字符的密码(仅限小写字符).

我的算法大多是7个嵌套的for循环,从a到z并测试每个可能的组合.

现在,我正在以这种方式划分我的工作:
如果我有3个工作线程,则
线程1:axxxxxx到ixxxxxx
线程2:jxxxxxx到rxxxxxx
线程3:sxxxxxx到zxxxxxx

所以3个线程将继续循环,直到找到匹配.

主线程将等待第一个线程返回.

我的问题是:这是在我的线程之间划分工作的最佳方法吗?你对我如何更有效率有任何想法吗?

而且,即使它不是我审讯的主要部分,你能想到比7 for-loop迭代更好的方法吗?

(请注意,此程序适用于学校项目,而不是真正破解密码)

Eri*_* J. 6

如果所有密钥都具有相同的可能性,并且评估密钥的成本对于每个密钥是相同的,并且如果每个线程可以期望被分配给一个CPU而没有很多中断(例如,您的进程是唯一运行的CPU密集型) ,如你所做的那样均匀地划分键空间将非常有效.

如果这些假设中的一些是无效的,则构造程序的更灵活的方式是让一个线程(生产者线程)将键范围分配给一个或多个消费者线程以进行处理.一旦给定的线程完成其工作块,它将返回到生产者并请求新的密钥范围进行分析.

生产者/消费者模式有一些开销,但它更灵活.