我正在使用bcrypt在我的数据库中存储密码,使用工作因子7,在我合理的现代笔记本电脑上使用大约0.02秒来散列单个密码。
Coda Hale说,使用bcrypt可以让你通过调整工作因素来“跟上摩尔定律”。但是没有办法重新加密用户的密码,因为我没有存储明文。如何让我的数据库保持最新并且难以破解(假设它在5年以上可能会成为一个问题)?
答案 0 :(得分:9)
登录时重新加密。请参阅Optimal bcrypt work factor。
请记住,该值存储在密码中:
$2a$(2 chars work)$(22 chars salt)(31 chars hash)
。它不是固定值。如果您发现负载过高,只需在下次登录时进行加密,就可以更快地加密计算。同样,随着时间的推移,您可以获得更好的服务器,如果负载不是问题,您可以在登录时升级其哈希的强度。
诀窍在于,与摩尔定律一起,将其保持大致相同的时间。 该数字为log2,因此每次计算机速度加倍时,请将默认数字加1 ...