El método crypto.pbkdf2() proporciona una implementación asincrónica de función de derivación de clave basada en contraseña 2 , es decir (PBKDF2). Además, se implementa un algoritmo de resumen HMAC particular definido por resumen para derivar una clave de la longitud de bytes requerida (keylen) a partir de la contraseña, la sal y las iteraciones indicadas.
Sintaxis:
crypto.pbkdf2( password, salt, iterations, keylen, digest, callback )
Parámetros: Este método acepta seis parámetros como se mencionó anteriormente y se describe a continuación:
- contraseña: puede contener datos de tipo string, búfer, TypedArray o DataView .
- sal: Debe ser lo más único posible. Sin embargo, se recomienda que una sal sea arbitraria y, en cualquier caso, tenga al menos 16 bytes de longitud. Es de tipo string, Buffer, TypedArray o DataView .
- iteraciones: debe ser un número y debe establecerse lo más alto posible. Por lo tanto, cuanto mayor sea el número de iteraciones, más segura será la clave derivada, pero en ese caso lleva más tiempo completarla. Es de tipo número.
- keylen: Es la clave de la longitud de bytes requerida y es de tipo número.
- digest: Se trata de algoritmos de resumen de tipo string.
- devolución de llamada: es una función con dos parámetros, a saber , err y deriveKey .
Tipo de devolución: devuelve la clave basada en contraseña derivada.
El siguiente ejemplo ilustra el uso del método crypto.pbkdf2() en Node.js:
Ejemplo 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')); });
Producción:
3745e482c6e0ade35da10139e797157f4a5da669dad7d5da88ef87e 47471cc47ed941c7ad618e827304f083f8707f12b7cfdd5f489b782 f10cc269e3c08d59ae
Ejemplo 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); } });
Salida: aquí, se devuelve un búfer ya que una clave derivada no se cambia a una string.
Buffer 71 1e 7b 7b 9b 53
Referencia: https://nodejs.org/api/crypto.html#crypto_crypto_pbkdf2_password_salt_iterations_keylen_digest_callback
Publicación traducida automáticamente
Artículo escrito por nidhi1352singh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA