Tom*_*mek 1 passwords hash blowfish
我对密码安全保持有点困惑.假设我有用户帐户表的数据库.这是我保存密码的地方.这时我正在使用盐渍的sha1.
我读基于Blowfish的函数比sha1好,因为它们需要更多时间来处理请求.
是否有任何理由不使用盐渍sha1并将登录尝试次数限制为某个合理的数量(例如每小时50次)作为暴力攻击的"防火墙"?
使用此数据库的人无需强行执行任何操作,因为他可以通过查询更改记录.
使用基于blowfish的函数,你肯定意味着BCrypt哈希函数.正如您已经说过的那样,BCrypt设计得很慢(需要一些计算时间),这是其他快速哈希函数的唯一优势,但这是至关重要的.
使用现成的GPU,您可以每秒计算大约3千兆的散列值,因此您可以在不到2毫秒的时间内强制使用5'000'000个单词的整个英语词典.即使SHA-1是安全散列函数,也不适合散列密码.
BCrypt有一个成本因素,可以适应未来,因此更快,硬件.成本因子决定了执行散列的迭代次数.最近我写了一篇关于哈希密码的教程,我邀请你看看它.
关于限制登录尝试的观点是有道理的,但是如果攻击者可以访问数据库(SQL注入),散列应该保护密码.当然,您可以限制登录尝试,但这与散列无关,您甚至可以在此方案中存储密码明文.