gpt4 book ai didi

node.js - 无法理解 bcrypt npm 包中的 bcrypt.genSalt

转载 作者:行者123 更新时间:2023-12-02 00:49:13 27 4
gpt4 key购买 nike

嗨,我最近在我的项目中使用了 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com