在Node中使用libsodium.crypto_pwhash(Argon2)

时间:2016-12-13 19:39:21

标签: node.js libsodium argon2-ffi

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

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

在这种情况下,password只是一个字母“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非常新,所以我很遗憾。

1 个答案:

答案 0 :(得分:3)

想出来。我(出于某种愚蠢的原因)认为memlimit,我设置为4096,以MB为单位测量,显然它以千字节为单位,并且具有可接受的最小值32768(32 MB)。它现在有效!