Node.js | crypto.pbkdf2 () Метод

Опубликовано: 3 Августа, 2021

Метод crypto.pbkdf2 () предоставляет реализацию асинхронной функции вывода ключей на основе пароля 2, т.е. (PBKDF2). Более того, конкретный алгоритм дайджеста HMAC, который определяется дайджестом, реализуется для получения ключа требуемой длины байта (keylen) из указанного пароля, соли и итераций.

Синтаксис:

 crypto.pbkdf2 (пароль, соль, итерации, keylen, дайджест, обратный вызов)

Параметры: этот метод принимает шесть параметров, как указано выше и описано ниже:

  • пароль: он может содержать данные типа String, Buffer, TypedArray или DataView .
  • соль: она должна быть как можно более уникальной. Однако рекомендуется, чтобы соль была произвольной и в любом случае имела длину не менее 16 байт. Это строка типа, Buffer, TypedArray или DataView .
  • итераций: это должно быть число, которое должно быть как можно большим. Таким образом, чем больше количество итераций, тем более безопасным будет полученный ключ, но в этом случае для завершения потребуется больше времени. Это номер типа.
  • keylen: это ключ требуемой длины в байтах и номер типа.
  • дайджест: это алгоритмы дайджеста строкового типа.
  • обратный вызов: это функция с двумя параметрами, а именно err и производным ключом .

Тип возвращаемого значения: возвращает полученный ключ на основе пароля.

Пример ниже иллюстрирует использование метода crypto.pbkdf2 () в Node.js:

Пример 1:




// Node.js program to demonstrate the
// crypto.pbkdf2() method
// Including crypto module
const crypto = require( 'crypto' );
// Implementing pbkdf2 with all its parameters
crypto.pbkdf2( 'secret' , 'salt' , 100000, 64,
'sha512' , (err, derivedKey) => {
if (err) throw err;
// Prints derivedKey
console.log(derivedKey.toString( 'hex' ));
});

Выход:

3745e482c6e0ade35da10139e797157f4a5da669dad7d5da88ef87e
47471cc47ed941c7ad618e827304f083f8707f12b7cfdd5f489b782
f10cc269e3c08d59ae

Пример 2:




// Node.js program to demonstrate the
// crypto.pbkdf2() method
// Including crypto module
const crypto = require( 'crypto' );
// Implementing pbkdf2 with all its parameters
// but digest is null
crypto.pbkdf2( 'secret' , 'salt' , 677, 6,
null , (err, derivedKey) => {
if (err)
{
console.log(err);
}
else
{
// Prints derivedKey without encoding
console.log(derivedKey);
}
});

Вывод: здесь возвращается буфер, поскольку производный ключ не изменяется на строку.

 Буфер 71 1e 7b 7b 9b 53

Ссылка: https://nodejs.org/api/crypto.html#crypto_crypto_pbkdf2_password_salt_iterations_keylen_digest_callback