El método diffieHellman.generateKeys() es una interfaz de programación de aplicaciones incorporada de la clase DiffieHellman dentro del módulo criptográfico que se utiliza para generar el valor de clave pública y privada del objeto DiffieHellman (dh).
Sintaxis:
diffieHellman.generateKeys([encoding])
Parámetros: Este método toma la codificación como parámetro.
Valor devuelto: Devuelve la clave pública DiffieHellman en la codificación especificada. Si no se proporciona la codificación, se devuelve el búfer; de lo contrario, se devuelve la string.
Ejemplo 1:
index.js
// Node.js program to demonstrate the // diffieHellman.generateKeys() method // Destructure createDiffieHellman method from crypto const { createDiffieHellman } = require('crypto'); // Instances of the DiffieHellman class const dh = createDiffieHellman(512); // Generate DH's Key // No encoding specified // Return Buffer let dhKey = dh.generateKeys() console.log('\nIs Buffer return ( encoding not specified ) : ' + Buffer.isBuffer( dhKey ) ) // true console.log('Return value :') console.log( dhKey ) // Encoding specified // Return String dhKey = dh.generateKeys('base64') console.log('\nIs Buffer return ( encoding specified ): ' + Buffer.isBuffer( dhKey ) ) // true console.log('Return value :') console.log( dhKey )
Ejecute el archivo index.js con el siguiente comando:
node index.js
Producción:
Is Buffer return ( encoding not specified ) : true Return value : <Buffer 6d 17 8c ea 74 27 5b f4 86 f8 72 f9 73 93 19 8b 27 90 86 e7 d8 1b 1c 50 b2 65 9a 66 bc 2c 4d 49 f6 46 3e b5 1c 09 e5 ef 5c b9 8e fc 65 95 aa 40 3a 6c ... 14 more bytes> Is Buffer return ( encoding specified ): false Return value : bReM6nQnW/SG+HL5c5MZiyeQhufYGxxQsmWaZrwsTUn2Rj61HAnl71y5jvxllapAO mwITlF8/1Z67Nt7Lc8tqA==
Ejemplo 2:
index.js
// Node.js program to demonstrate the // diffieHellman.generateKeys() method // Destructure createDiffieHellman method from crypto const { createDiffieHellman } = require('crypto'); // Generate Alice's keys... const alice = createDiffieHellman(512); // Generate Alices's Prime const alicePrime = alice.getPrime(); // Generate Alice's Generator const aliceGenerator = alice.getGenerator() // Generate Alice's Key const aliceKey = alice.generateKeys('base64'); // Generate Bob's keys... const bob = createDiffieHellman( alicePrime, aliceGenerator ); // Generate Bobs's Prime const bobPrime = bob.getPrime(); // Generate Bob's Generator const bobGenerator = bob.getGenerator() // Generate Bob's Key const bobKey = bob.generateKeys('base64'); // Exchange and generate the secret... const aliceSecret = alice.computeSecret(bobKey, 'base64', 'base64'); const bobSecret = bob.computeSecret(aliceKey, 'base64', 'base64'); let isSymmetric = aliceSecret == bobSecret // true console.log( `Is Symmetric key generation successful : ${ isSymmetric }` );
Ejecute el archivo index.js con el siguiente comando:
node index.js
Producción:
Is Symmetric key generation successful : true
Referencia: https://nodejs.org/api/crypto.html#crypto_diffiehelman_generatekeys_encoding