在节点

问题描述:

中使用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为一些原因。

有没有人有任何此库的经验或可以帮助我找出我做错了什么。节点相当新,所以我很迷茫。

+0

如果您严格需要氩气2,为什么不使用[node-argon2](https://www.npmjs.com/package/argon2)? – ranisalt

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