在 Node 中使用 libsodium.crypto_pwhash (Argon2)

Using libsodium.crypto_pwhash (Argon2) in Node

我无法 crypto_pwhash_str 在我的 Node 项目中工作。我正确导入了 libsodium-wrappers-sumo 和 libsodium-sumo 库,并且能够成功调用其他函数。我对有问题的函数的调用如下所示:

sodium.crypto_pwhash_str(password, 3, 4096, 'text')

在这种情况下,密码只是一个带有字母 'a' 的字符串对象。

当我 运行 调试器并试图找出问题所在时,我得到了这个内部代码块:

if ((libsodium._crypto_pwhash_str(hashed_password_address, password_address, password_length, 0, opsLimit, 0, memLimit) | 0) === 0) {
  var ret = libsodium.Pointer_stringify(hashed_password_address);
  _free_all(address_pool);
  return ret;
}
_free_and_throw_error(address_pool);

它无法进入 for 循环并且对 _crypto_pwhash_str() 的调用由于某种原因评估为 -1

有没有人对这个库有任何经验或者可以帮助我弄清楚我做错了什么。对 Node 还很陌生,所以我很迷茫。

想通了。我(出于一些愚蠢的原因)认为我设置为 4096 的 memlimit 以 MB 为单位,显然它以千字节为单位,并且可接受的最小值为 32768(32 MB)。现在可以使用了!