ページ

2014年1月22日

bcryptのラウンド回数と実行時間

「sha? md5? じじい!」って会社の@kirisに罵倒された気がして、「ナウでヤングな若者はbcryptだよ」と蔑んだ目で見られたので、bcryptでround回数を変更すると実行時間はどうなるんだろう?って言うことで、計測してみました。bcryptが何なのか、ってのは、自分で調べてね。
py-bcrypt使って計測していますが、計算処理はCのコードで書かれているっぽいです。

コードは、

import timeit
for i in range(1,20):
    print timeit.timeit("bcrypt.hashpw('password', bcrypt.gensalt(" + str(i) + "))", setup="import bcrypt", number=1)

です。計測結果ですが、

ラウンド数時間(sec)
1 0.002
2 0.002
3 0.002
4 0.002
5 0.004
6 0.004
7 0.007
8 0.015
9 0.031
10 0.063
11 0.125
12 0.256
13 0.516
14 1.0121
15 1.9985
16 4.0332
17 8.0246
18 16.1026
19 32.1371
20 64.3373

グラフにするとこんな感じ。
いい感じに計算時間が伸びていきます。でも、デフォルトでは12回でそれが256m secはちょっと遅いですね。計測したスペックのマシンだと10回か11回が限界ですね。100m secには収めたい。

0 件のコメント: