【发布时间】:2014-08-20 05:27:55
【问题描述】:
我想实现一个多线程 MD5 蛮力攻击算法(在 C++ 中)。我知道 Rainbow 表和字典,但我不会实现最高效的 MD5 破解器,只是对蛮力算法感兴趣
问题是如何在线程之间分配所有可用长度的所有密码变体。例如,要恢复仅包含 4 到 6 个符号的小写字符的密码,我们应该查看 N=26^4+26^5+26^6=321254128 个组合(根据重复公式的变化,Vnk = n^ k)
因此,为了在 8 个线程之间等量分配所有排列,我们应该知道每个 (N/8)*t 变化,其中 t=(1..7)。请注意,这些变体具有不同的长度 (4,5,6),4-5 个符号的变体可能会被推送到具有一定数量的 6 符号变体的同一线程
有人知道,该算法是如何在“现实世界”的蛮力应用中实现的吗?也许某种线程池?
【问题讨论】:
标签: c++ multithreading md5 brute-force