javascript - 是否有像 bcrypt 这样的慢速 Javascript 哈希算法?

标签 javascript hash sha bcrypt

我不是在谈论服务器端 node.js。

我想对我网站客户端的 key 使用慢散列算法。我找到了 SHA-256 的实现哪个seem to be reliable .我还找到了this question这导致了 OP creating his own library .

但是,我不确定我是否应该只进行多轮 SHA 散列或信任其中的一些代码,因为我不是安全专家而且它似乎没有大量的追随者只是被“盯着” 36 人。

在这种情况下最好的选择是什么?一旦我选择了某些东西,我(基本上)就不能改变方法。

我想要一个慢散列(不是加密)算法,我宁愿它产生一个短字符串。例如,60 个字符的慢速 bcrypt 与 70 个字符的快速 SHA-256。

最佳答案

目前有三种 key 派生函数被广泛认为可以抵御暴力破解尝试。 key 派生函数与常规哈希算法略有不同,因为它们设计速度较慢,即使面对现代基于 GPU 的计算也是如此。

我将按照理论上安全性的顺序列出它们:

  • PBKDF2由RSA设计,基于SHA,是NIST推荐的算法。有 a couple implementations您可以在浏览器中使用。

    Node 用户注意:Node 的crypto 模块有一个built-in PBKDF2 function。 .用那个。

  • bcrypt ,基于 Blowfish,比 PBKDF2 稍微更安全。它已经过相对良好的测试和验证,安全,但没有任何标准机构的批准印章,如果您考虑的话。有 a generic JS implementation here .

    Node 用户注意:使用 node.bcrypt ,它在单独的线程上执行计算量大的东西。

  • 最后,scrypt是理论上最安全(最慢)的 KDF。不幸的是,该算法非常新,因此尚未经过密码学界的严格研究和测试验证。然而,它是 on track to become a IETF standard .

    由于算法太新,很难找到实现。我只能找到 this half-baked one .虽然安全优势非常有前途,但在算法本身及其实现都经过安全验证之前,我不建议使用 scrypt。

这三者实际上如何比较? scrypt paper有比较:

algorithm comparison table

实际上,即使是 PBKDF2 也使得除政府之外的任何人破解单个 8 字符密码的成本过高。

关于javascript - 是否有像 bcrypt 这样的慢速 Javascript 哈希算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13275187/

相关文章:

javascript - 在 Javascript 中复制哈希值

python - NodeJS 和 Python 哈希的区别

javascript - 如何更改第二次单击时的不透明度?

C 程序可以在命令行中运行,但不能在 Python 脚本中运行?

javascript - 显示前清除 Telerik radwindow 内容

php - 有没有办法在没有彩虹表的情况下反转哈希?

linux - SALT 附加到密码的哪里,在密码之后还是之前?

android - 如何将不同的 firebase 数据库连接到 release/beta/alpha 版本?

Javascript 货币正则表达式

javascript - Tinymce 4.x 的 Ajax 文件管理器