在节点
问题描述:
中使用libsodium.crypto_pwhash(Argon2)
我无法在Node项目中使用crypto_pwhash_str
。我正确导入了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
为一些原因。
有没有人有任何此库的经验或可以帮助我找出我做错了什么。节点相当新,所以我很迷茫。
答
想通了。我(出于某种愚蠢的原因)认为我设置为4096的memlimit
以MB为单位进行测量,显然它是以千字节为单位测量的,并且具有可接受的最小值32768(32 MB)。它现在工作!
如果您严格需要氩气2,为什么不使用[node-argon2](https://www.npmjs.com/package/argon2)? – ranisalt