2014-06-28 19 views
0

我已經在C++中實現了2005年發佈的WEP攻擊的Mantin模型。爲了檢查實現是否正確,我正在從RC4 PRG生成2^48 IV和它們對應的第257個密鑰流字節。算法的複雜度是o(n)。基本上代碼的結構如下:mantin wep在C++中的實現

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時需要很長時間。是正常的還是我錯過了什麼?我正在使用英特爾i3處理器。

回答

1

是的,這將需要一段時間。

考慮從0到2^48-1的計數。這大概是281萬億美元的運營。我的電腦(使用英特爾酷睿i5-2500K)花費了大約9秒的時間來運行一個單線程循環,從0到2^32-1;基於此,計算到2^48-1將花費大約164個CPU核心小時,或者一個CPU核心上大約一週。這並沒有計算在該櫃檯做任何有用的事情需要花費的時間。

幸運的是,這個問題很容易並行化。將搜索空間拆分爲塊並在不同的CPU內核上運行每個塊,然後在完成時合併結果。