crypto.argon2(algorithm, parameters, callback)


稳定性: 1.2 - 发布候选版

提供异步 氩气2 实现。Argon2 是一种基于密码的密钥派生函数,旨在在计算和内存方面消耗较大,以使暴力破解攻击不划算。

【Provides an asynchronous Argon2 implementation. Argon2 is a password-based key derivation function that is designed to be expensive computationally and memory-wise in order to make brute-force attacks unrewarding.】

nonce 应尽可能唯一。建议 nonce 是随机的,并且至少 16 字节长。详情请参见 NIST SP 800-132

【The nonce should be as unique as possible. It is recommended that a nonce is random and at least 16 bytes long. See NIST SP 800-132 for details.】

在为 messagenoncesecretassociatedData 传递字符串时,请考虑 将字符串用作加密 API 输入时的注意事项

【When passing strings for message, nonce, secret or associatedData, please consider caveats when using strings as inputs to cryptographic APIs.】

callback 函数会传入两个参数:errderivedKey。当密钥派生失败时,err 是一个异常对象,否则 errnullderivedKey 作为 Buffer 传递给回调函数。

【The callback function is called with two arguments: err and derivedKey. err is an exception object when key derivation fails, otherwise err is null. derivedKey is passed to the callback as a Buffer.】

当任何输入参数指定无效的值或类型时,会抛出异常。

【An exception is thrown when any of the input arguments specify invalid values or types.】

const { argon2, randomBytes } = await import('node:crypto');

const parameters = {
  message: 'password',
  nonce: randomBytes(16),
  parallelism: 4,
  tagLength: 64,
  memory: 65536,
  passes: 3,
};

argon2('argon2id', parameters, (err, derivedKey) => {
  if (err) throw err;
  console.log(derivedKey.toString('hex'));  // 'af91dad...9520f15'
});const { argon2, randomBytes } = require('node:crypto');

const parameters = {
  message: 'password',
  nonce: randomBytes(16),
  parallelism: 4,
  tagLength: 64,
  memory: 65536,
  passes: 3,
};

argon2('argon2id', parameters, (err, derivedKey) => {
  if (err) throw err;
  console.log(derivedKey.toString('hex'));  // 'af91dad...9520f15'
});