Bcrypt用于密码哈希,因为它很慢?

ast*_*nic 8 security hash

我今天在not-implemented.com阅读:

在需要高速散列函数的大多数情况下,应选择Sha-256.它被认为是安全的,没有已知的理论漏洞,并且它具有32字节的合理摘要大小.但是,对于像哈希用户密码这样的东西,设计为慢速的功能是首选:一个很棒的是bcrypt.

有人可以解释最后一句话:

但是,对于像哈希用户密码这样的东西,设计为慢速的功能是首选:一个很棒的是bcrypt.

我不是说这不正确,我的问题很简单:

为什么优先使用散列用户密码来使用慢速功能?

lin*_*nac 11

在您这边,密码哈希需要很少计算.但是,试图从被盗的哈希强制密码的攻击者依赖于计算尽可能多的哈希值.

所以,如果您的登录现在需要100毫秒而不是0.1(可能更少),这对您来说并不是真正的问题.但是如果攻击者需要2000天来破解密码而不是2天,那么这对攻击者来说会产生巨大的影响.

bcrypt设计得很慢,不允许任何快捷方式.


ean*_*son 11

因为如果需要更多时间来散列值,那么强制密码也需要更长的时间.

请记住,慢意味着它需要更多的计算能力.当潜在的黑客试图暴力破解密码时也是如此.