bcrypt 在 nodejs 服务器上非常慢

bcrypt very slow on nodejs server

我的 test.js 文件中有以下代码:

const bcrypt = require("bcrypt");
const { performance } = require("perf_hooks");

let hash = "b$v38KOyF2WSaJI/wcxSKN6u1iyvjfOu.Tjs3QHKCW2O4nCt0rTUgMu";
let password = "7!E:J|8yvGw$v]xXfKngkUAw3]EQ?B";

async function checkPassword() {
  let t = performance.now();
  if (await bcrypt.compare(password, hash)) {
    console.log("Passed! ", performance.now() - t);
  } else {
    console.log("Failed! ", performance.now() - t);
  }
}

checkPassword();

那我运行node test.js

我得到的输出是:

Passed!  59178.30090880394          < for a correct password
Failed!  59386.33465099335          < for an incorrect password

基本检查时间将近一分钟! 这是预期的结果吗?

我的package.json正在使用:

"dependencies": {
  "bcrypt": "^5.0.0",
  ...

我在控制台中没有收到任何错误,一切都在正确完成。我正在散列的密码是

7!E:J|8yvGw$v]xXfKngkUAw3]EQ?B

是不是太长了?我不完全理解 bcrypt 是如何工作的,以防不明显!

这是你的问题:

b$v38KOyF2WSaJI/wcxSKN6u1iyvjfOu.Tjs3QHKCW2O4nCt0rTUgMu

这意味着:

  • 版本:2b
  • 成本因素:20

成本系数 20

成本系数 12 在当前硬件上大约需要 250 毫秒。

Cost Time
12 250 ms
13 500 ms
14 1 s
15 2 s
16 4 s
17 8 s
18 16 s
19 32 s
20 54 s