Node.js | crypto.pbkdf2 () Метод
Метод 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