天天看點

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);

ret = 1 - (1 - 1 / N) ^ exp;

函數參數:

N                  密鑰空間

t                    連結清單長度

m                  連結清單個數

在matlab上運作得到:

>> calc_success_probability(80603140212, 2400, 40000000)
ans =
    0.6055      

這是單表的成功率,再套入多表公式中,即可得出整個彩虹表的成功機率。

繼續閱讀