【发布时间】:2012-11-12 19:09:21
【问题描述】:
对于大多数面向公众的服务,在用户开始生气之前,您通常需要 250 毫秒到 400 毫秒的时间进行登录。
那么,如果我们认为登录尝试一次调用数据库,那么 登录/注册 中rounds 的最佳值是多少,并且它使用 MongoDB 和 非阻塞调用。 (使用Mongotor,并使用电子邮件作为_id,因此默认情况下是索引,查询速度很快:0.00299978256226,当然还有数据库测试有 3 条记录...)
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
我在戴尔 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 时,您能否建议我一个适合生产的良好回合值?
【问题讨论】:
标签: python encryption pbkdf2