在 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)。现在可以使用了!
我无法 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)。现在可以使用了!