RainbowTable中參數對success rate的影響

    在rainbowtable中一個非常重要的指標是success rate,成功率,例如success rate爲99.9%,也就是說你破解1000個密碼時,有999個密碼能破解成功。
 
Philippe Oechslin's paper on time-memory trade-off一文中,作者給出了單表和多表的success rate 公式,根據這個公式,可以用matlab計算出success rate,下面給出實驗的代碼
% 1 - (1 - 1 / N)^(m(1) + m(2) + m(3) + ... + m(t - 1))
% m(1) = m, m(i) = N * (1 - (1 - 1 / N) ^ m(i - 1))

function ret = calc_success_probability(N, t, m)
arr = zeros(1, t - 1);
arr(1) = m;
for i = 2 : t - 1
arr(i) = N * (1 - (1 - 1 / N) ^ arr(i - 1));
end;

exp = 0;
for i = 1 : t - 1
exp = exp + arr(i);
end;

ret = 1 - (1 - 1 / N) ^ exp;
 
函數參數:
N                  密鑰空間
t                    鏈表長度
m                  鏈表個數
 
在matlab上運行得到:
>> calc_success_probability(80603140212, 2400, 40000000)
ans =
    0.6055
這是單表的成功率,再套入多表公式中,即可得出整個彩虹表的成功概率。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章