我已经用c ++实现了2005年发布的Mantin WEP攻击模型。为了检查实现是否正确,我将从RC4 PRG生成2 ^ 48个IV及其对应的第257个密钥流字节。算法的复杂性是o(n)。基本上代码的结构如下:
for(loop through n times){
for(loop through 3 times){}
for(loop through 256 times){ some code}
for(loop through 257 times){some code}
}
所以当把n = 2 ^ 48时,需要很长时间。是正常还是我遗失了什么?我正在使用intel i3处理器。
答案 0 :(得分:1)
是的,需要一段时间。
考虑从0到2 ^ 48-1计算所需的内容。这大约有281万亿次运营。我的计算机(使用英特尔酷睿i5-2500K)花了大约9秒钟来运行一个从0到2 ^ 32-1的单线程循环;基于此,计数到2 ^ 48-1将花费大约164个CPU核心小时,或者在单个CPU核心上大约一周。这并不能计算用该计数器做任何有用的事情所需的时间。
幸运的是,问题很容易并行化。将搜索空间拆分为块并在不同的CPU核心上运行每个块,然后在完成后合并结果。