首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >与增加SHA迭代次数相比,bcrypt如何更好地证明未来?

与增加SHA迭代次数相比,bcrypt如何更好地证明未来?
EN

Stack Overflow用户
提问于 2011-07-22 21:58:18
回答 6查看 2.3K关注 0票数 12

我一直在研究bcrypt散列,当然,该方案的最大好处之一就是它的“适应性”。然而,除了简单地增加在SHA-1散列上进行的迭代次数之外,它还有什么可适应性的?比方说,不是SHA-1散列值1000次,而是将其增加到10,000次迭代。这不是达到了同样的目标吗?是什么让bcrypt具有更强的适应性?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-07-24 22:25:12

使用散列函数进行多次迭代有一些微妙之处,因为必须涉及某种“加盐”,而且现有的散列函数并不像预期的那样“随机”;因此必须小心,在这种情况下,您最终会使用PBKDF2。PBKDF2是为密钥派生而设计的,这与密码散列不完全相同,但事实证明它在这方面也相当不错。

bcrypt比PBKDF2-with-SHA-1有(轻微)优势,因为bcrypt是从Blowfish块密码派生而来的。进行多次迭代的目的是使密码处理变慢,尤其是对攻击者来说更是如此。对于正常的、诚实的系统,我们容忍该函数变得很慢,因为它阻止了广泛的密码猜测。但攻击者可能会使用正常系统不使用的硬件,例如programmable GPU,这会给适合这种硬件的计算带来相当大的提升。Blowfish和bcrypt使用基于RAM的查找表(在处理过程中修改的表);这样的表很容易在通用CPU上处理,但在GPU上相当繁琐;因此,bcrypt在某种程度上阻碍了使用GPU的攻击者的处理增强。这是一个额外的好处,这使得bcrypt比PBKDF2更适合作为密码存储。

票数 19
EN

Stack Overflow用户

发布于 2011-07-25 12:01:51

两者的替代方案是scrypt。与bcrypt不同的是,它没有使用某种不同寻常的河豚密码,而是使用任何标准的散列函数,而且它被特别设计为难以在专用硬件上实现,因为它的内存和时间效率都很低。

票数 4
EN

Stack Overflow用户

发布于 2011-07-22 22:05:43

你的选择有点太少了。您没有说明如何将密码和盐组合到您的散列方案中。以错误的方式执行此操作可能会导致漏洞。bcrypt(和其他标准KDF)的优点是这一点得到了很好的规定。

如果您在常见的HMAC-SHA1模式下查看PBKDF2,它与您的建议非常相似。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6791126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档