一般向けのほとんどのサービスでは、通常、ユーザーがイライラし始めるまでに 250 ミリ秒から 400 ミリ秒のサインイン時間がかかります。
したがって、ログイン試行のためにデータベースへの呼び出しが 1 つあり、それが非ブロッキング呼び出しでMongoDBを使用していると考える場合rounds
、ログイン/登録での最適な値は何でしょうか。( Mongotorを使用し、電子メールを として使用するため、デフォルトでindexedです。クエリは高速です: 0.00299978256226そしてもちろん、 3 つのレコードを持つデータベースでテストされています...)_id
import passlib.hash
import time
hashh = passlib.hash.pbkdf2_sha512
beg1 = time.time()
password = hashh.encrypt("test", salt_size = 32, rounds = 12000)
print time.time()- beg1 # returns 0.142999887466
beg2 = time.time()
hashh.verify("test", password) # returns 0.143000125885
print time.time()- beg2
半分の値を使用する場合:
password = hashh.encrypt("test", salt_size = 32, rounds = 4000) # returns 0.0720000267029
hashh.verify("test", password) # returns 0.0709998607635
Dell XPS 15 i7 2.0 Ghz で Windows 7 64 ビットを使用しています
注意: bcryptをインストールしました。もちろん、デフォルト値として直接使用するのは本当に面倒です ( rounds = 12
):
hashh = passlib.hash.bcrypt
beg1 = time.time()
password = hashh.encrypt("test", rounds = 12) # returns 0.406000137329
print time.time()- beg1
beg2 = time.time()
hashh.verify("test", password) # returns 0.40499997139
print time.time()- beg2
半値:
password = hashh.encrypt("test", rounds = 12) # 0.00699996948242 wonderful?
hashh.verify("test", password) # 0.00600004196167
pbkdf2_sha512
プロダクションに適したラウンド値を提案してもらえますか?