有没有像 bcrypt 这样慢的 Javascript 哈希算法?

2024-01-05

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

我想对我网站客户端上的密钥使用慢速哈希算法。我发现了SHA-256 https://github.com/bitwiseshiftleft/sjcl/blob/master/core/sha256.js which 似乎可靠 http://bitwiseshiftleft.github.com/sjcl/。我还发现这个问题 https://stackoverflow.com/questions/2299434/bcrypt-implementation-in-javascript这导致OP创建自己的图书馆 http://code.google.com/p/javascript-bcrypt/.

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

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

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


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

我将按以下顺序列出它们理论的安全:

  • PBKDF2 http://en.wikipedia.org/wiki/PBKDF2由RSA设计,基于SHA,是NIST推荐的算法。有a couple http://code.google.com/p/crypto-js/#PBKDF2 实施 http://anandam.name/pbkdf2/您可以在浏览器中使用。

    节点用户注意事项: Node's crypto模块有一个内置PBKDF2功能 http://nodejs.org/api/crypto.html#crypto_crypto_pbkdf2_password_salt_iterations_keylen_callback。用那个。

  • bcrypt http://en.wikipedia.org/wiki/Bcrypt,基于 Blowfish,比 PBKDF2 稍微安全一些。它已经过相对良好的测试和安全验证,但没有任何标准机构的批准印章(如果您考虑的话)。有这里有一个通用的 JS 实现 http://code.google.com/p/javascript-bcrypt/.

    节点用户注意事项: Use 节点.bcrypt https://github.com/ncb000gt/node.bcrypt.js/,它在单独的线程上执行计算量大的事情。

  • 最后,scrypt http://en.wikipedia.org/wiki/Scrypt无疑是理论上最安全(最慢)的 KDF。不幸的是,该算法非常新,因此尚未经过密码学界严格的研究和测试的验证。然而,它是有望成为 IETF 标准 https://datatracker.ietf.org/doc/html/draft-josefsson-scrypt-kdf-00.

    由于该算法非常新,因此很难找到实现。我只能找到这个半生不熟的 https://github.com/cheongwy/node-scrypt-js。虽然安全优势非常有希望,但在算法本身及其实现都经过安全验证之前,我不会推荐 scrypt。

这三者实际上如何比较?这加密纸 http://www.tarsnap.com/scrypt/scrypt.pdf有一个比较:

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有像 bcrypt 这样慢的 Javascript 哈希算法? 的相关文章

  • 内容脚本中的 Firefox SDK 访问首选项

    About 我正在使用 Firefox Add on SDK 开发 Firefox Add on 该附加组件将是特定于站点的 并将根据用户偏好隐藏某些元素 几年前我已经制作了这个附加组件 但使用新的 SDK 后 事情的工作方式有点不同 Co
  • 如何使对象“a == b”的比较成立? [复制]

    这个问题在这里已经有答案了 这是面试前 JavaScript 在线测试的问题之一 function F var a new F var b new F Q 如何进行比较a b to be true e g console log a b t
  • 在承诺中运行同步函数

    我是 JS 和异步操作的新手 在使用express的nodeJS路由器中 我使用mongoose从mongo聚合了一些数据 该数据是每隔 15 分钟从不同站点收集的天气数据 我使用猫鼬聚合管道处理数据 以获取每小时数据并按每个站点进行分组
  • ExtJS 4 用于选择所选值的组合框事件

    由于某种原因 我需要知道用户何时从组合框中选择了值 即使它已经被选择 仅当用户选择未选择的项目时 选择 事件才起作用 我在组合框或选择器的文档中没有看到任何类似 itemclick 的事件 有任何想法吗 ComboBox uses 绑定列表
  • 将 Javascript 正则表达式转换为 PHP

    我知道这个问题已经被问了大约十几次 但是从技术上讲 这个问题并不是一个骗局 如果您愿意 请检查其他问题 基本上 我有一个 Javascript 正则表达式来检查用于前端验证的电子邮件地址 并且我使用 CodeIgniter 在后端进行双重检
  • CSS - 制作“步进”文本的好方法?

    有没有一种好的方法可以实现以下目标 而无需任何额外的标记 不过使用 JavaScript 就很好了 任何想法 Thanks Edit 我的标记将是这样的 div style width 400px p Text text text Text
  • 我无法在我的反应本机上使用加载的应用程序。它不会正常工作

    我不断收到此错误 错误截图 https i stack imgur com 88KPa png 这是我用来导入自定义谷歌字体的代码 import React useState from react import Home from scre
  • 检测 SVGAnimatedString 的类名

    我在构建 SVG 地图时遇到问题 触发的功能 g 上的 onmouseover 不起作用 我当时用的 window onmouseover function e console log e target className 查看类名是否有问
  • 正则表达式没有按预期工作?

    我有这个正则表达式 new RegExp a z 0 9 ig 我正在测试一个不应该工作的字符串 vc 但它确实通过了测试 而且它不应该 new RegExp a z 0 9 ig test vc true 但如果我删除其中一个 or or
  • 如何将这段 javascript 代码重写为 C++11?

    这是我在 Javascript Definitive Guide 中看到的 javascript 闭包代码 我想把它写成C 11 var uniqueID1 function var id 0 return function return
  • Lodash 和 Underscore.js 之间的差异 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 为什么有人会更喜欢Lodash http lodash com or 下划线 js http underscorejs org 实用程序库优于其
  • 单击 div 中的图像时如何翻转该 Div?

    好吧 我对编写 Javascript 知之甚少 我可以对其进行一些编辑 并且涉足了 CSS3 动画 我将向您展示我正在努力实现的目标 然后在下面进行解释 网站布局将是这样的 https i stack imgur com RMb4R jpg
  • 根据复选框显示/隐藏输入字段[重复]

    这个问题在这里已经有答案了 如果单击该复选框 它将显示一个输入字段 到目前为止它正在工作 但如果未选中该复选框 它应该隐藏它 我该怎么做 div class checkbox div
  • 如何使用jsPDF设置图像以适合页面宽度?

    有什么办法可以解决这个问题吗 我尝试以毫米为单位设置宽度和高度 如何将其设置为全角 您可以获取 PDF 文档的宽度和高度 如下所示 var doc new jsPDF p mm a4 var width doc internal pageS
  • Javascript 警报/消息框中的欧元符号或其他实体

    有谁知道我如何在 javascript 警报窗口中显示欧元或其他 html 实体 alert u20AC HTML 实体字符查找 http leftlogic com lounge articles entity lookup
  • jquery 中 DOM 元素的手动垃圾回收是否可以提高浏览器性能?

    在性能范围内 删除不再需要的元素是否有意义 或者浏览器是否对代码中未进一步引用的 dom 元素执行自动垃圾收集 some element fadeOut 1000 function el el remove lt does this mak
  • 出于安全目的,您是否有理由不执行自己的算法来打乱 ID?

    我计划实现我自己的非常简单的 哈希 公式 为具有多个用户的应用程序添加一层安全性 我目前的计划如下 用户创建一个帐户 此时后端会生成一个 ID ID 通过公式运行 假设 ID 57 8926 36 7 或同样随机的东西 然后 我将新的用户
  • jQuery 倒计时插件 - 只显示非零周期

    我正在使用 jQuery 倒计时插件编写倒计时 我只希望它显示活动 非零 周期 例如代替 剩余时间 0 天 0 小时 13 分 20 秒 它应该只显示 13 分 20 秒 我的代码是 countdown countdown expiryUr
  • 如何在画布中旋转图表同时保持数字垂直?

    我正在尝试围绕其中心旋转画布中的图表 同时保持字母直立 我正在尝试使用 ctx rotate 但它使用画布的左侧作为中心来旋转整个图表 以下链接提供了视觉效果 我希望它看起来像绿色 而不是红色 就像我的代码当前所做的那样 视觉解释 http
  • 将数组数组的字符串转换为 Javascript 数组数组的优雅方法?

    我有一个 ajax 请求 它返回一个值列表 如下所示 5 5 5 6 15 15 7 13 12 我需要它是一个带有数字的 javascript 数组 5 5 5 6 15 15 7 13 12 我尝试将 和 替换为 然后用 分割和 for

随机推荐