- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
嗨,我最近在我的项目中使用了 bcrypt npm 包的 bcrypt.genSalt 。使用 bcrypt.genSalt 的基本思想是为需要加密的密码生成 Salt。使用 bcrypt.genSalt 的语法如下
bcrypt.genSalt(rounds, cb)
轮数 - [可选] - 处理数据的成本。 (默认 - 10)
cb - [必需] - 生成盐后将触发的回调。使用 eio 使其异步。err - 回调的第一个参数,详细说明任何错误。salt - 提供生成的盐的回调的第二个参数。
出于好奇,我将 bcrypt.genSalt(rounds, cb) 中的 rounds 参数从 10 更改为 1024 strong> 并发现我的 API 无法执行 bcrypt.genSalt(rounds, cb)。我不得不中止 DHC 中的后期操作。
有人可以解释一下bcrypt.genSalt(rounds, cb)中rounds的重要性吗?另外,如果我操纵轮数为小于 10 或大于 10 的值,会发生什么?
最佳答案
rounds
bcrypt 中的 param 是对数。 bcrypt 内完成的重复哈希循环的实际数量是 Math.pow(2,rounds)
所以Math.pow(2,1024)
这是一个非常大的数字,你的处理数百万年都无法完成!
您应该测试并选择一个数字 - 可能在 10 到 20 之间 - 这需要几分之一秒,也许 200 毫秒。从技术上讲,为了获得最佳安全性,您应该在不影响用户体验的情况下使用尽可能高的数字,因为这是执行一次完整哈希所需的时间,这使得 bcrypt 能够有效防止来自哈希存储的暴力破解密码。
选择低于 10 的值不会损害您的用户体验,但攻击密码表的人会具有优势,并且可能能够在给定时间内扫描更常见的密码。
我发现在运行单元测试时使用值 1 非常有用 - 它使创建测试用户数据和测试用户登录的速度更快,因此您可以在更短的时间内运行更多单元测试。
关于node.js - 无法理解 bcrypt npm 包中的 bcrypt.genSalt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31470149/
由于bcrypt的机制是: >>> myhash = bcrypt.hashpw('testpassword', bcrypt.gensalt(12)) >>> myhash '$2a$12$K
嗨,我最近在我的项目中使用了 bcrypt npm 包的 bcrypt.genSalt 。使用 bcrypt.genSalt 的基本思想是为需要加密的密码生成 Salt。使用 bcrypt.genSa
我是一名优秀的程序员,十分优秀!