El método crypto.scrypt() es una interfaz de programación de aplicaciones incorporada del módulo criptográfico que se utiliza para habilitar una implementación de un scrypt asíncrono. Donde, scrypt es una función de derivación de clave basada en contraseña. Está destinado a ser costoso desde el punto de vista computacional y de memoria. Entonces, los ataques de fuerza bruta no tienen éxito.
Sintaxis:
crypto.scrypt( password, salt, keylen, options, callback )
Parámetros: Este método acepta cinco 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: contiene datos de tipo string, búfer, TypedArray o DataView. Debe ser lo más único posible. Además, se sugiere que un salt sea aleatorio y tenga una longitud mínima de 16 bytes.
- keylen: Es la longitud de la clave y debe ser un número.
- opciones: Es de tipo Objeto y tiene siete parámetros a saber
cost, blockSize, parallelization, N, r, p,
ymaxmem
.
Dónde,- cost: Es un parámetro de costo para CPU o memoria. Es un número y debe ser una potencia de dos mayor pero mayor que uno y por defecto su valor es 16384.
- blockSize: Es el parámetro para el tamaño del bloque asignado. Es un número y el valor por defecto es 8.
- paralelización: Es el parámetro para la Paralelización . Es un número y el valor por defecto es 1.
- N: Es un alias de cost. Es un número y solo se puede definir uno de los dos.
- r: Es un alias para blockSize. Es un número y solo se puede definir uno de los dos.
- p: Es un alias para la paralelización. Es un número y solo se puede definir uno de los dos.
- maxmem: Es el límite superior de la memoria a utilizar. Es un número y puede ocurrir un error cuando 128 * N * r (aprox.) es mayor que maxmem. El valor predeterminado es (32 * 1024 * 1024).
- devolución de llamada Es una función con dos parámetros, a saber, err y clave derivada.
Valor devuelto: Devuelve un búfer.
Los siguientes ejemplos ilustran el uso del método crypto.scrypt() en Node.js:
Ejemplo 1:
// Node.js program to demonstrate the // crypto.scrypt() method // Including crypto module var crypto = require('crypto'); // Calling scrypt method with some of its parameter crypto.scrypt('GfG', 'ffdgsg', 32, (err, derivedKey) => { if (err) throw err; // Prints derived key as buffer console.log("The derived key1 is :", derivedKey); }); // Calling scrypt method with the parameter N crypto.scrypt('GeeksforGeeks', 'tfytdx', 128, { N: 512 }, (err, derivedKey) => { if (err) throw err; // Prints derived key as buffer console.log("The derived key2 is :", derivedKey); console.log(); });
Producción:
The derived key2 is : <Buffer b3 f8 72 5f 58 df 98 d9 c0 8a ba 0c 2c 50 85 b1 76 de 39 35 40 27 7d 57 f1 6a a1 07 54 dc c9 63 65 32 f2 db 29 95 dc ee 0b 9f e3 d5 0a 9e 3a d0 f6 b4 ... > The derived key1 is : <Buffer dd 47 ee 3e a8 2e f2 5b eb 18 7d 35 1b fd f5 a8 e5 f5 38 ef a7 ff 05 53 1e 86 69 ad cd e8 89 76 >
Ejemplo 2:
// Node.js program to demonstrate the // crypto.scrypt() method // Including crypto module var crypto = require('crypto'); // Defining salt as typed array const x = new Uint32Array(7); // Calling scrypt method with some of its parameter crypto.scrypt('yytunnd', x, 16, (err, derivedKey) => { if (err) throw err; // Prints derived key which is encoded console.log("The derived key1 is :", derivedKey.toString("ascii")); }); // Defining salt as data view const y = new DataView(new ArrayBuffer(5)); // Calling scrypt method with the parameter N crypto.scrypt('oksjdjdn', y, 16, { N: 32 }, (err, derivedKey) => { if (err) throw err; // Prints derived key after encoding console.log("The derived key2 is :", derivedKey.toString("base64")); console.log(); });
Producción:
The derived key2 is : 6Gu0JKHDSHs0tkTuGYuQ7A== The derived key1 is : G"@&H pVCD3 X%
Referencia: https://nodejs.org/api/crypto.html#crypto_crypto_scrypt_password_salt_keylen_options_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