Método Node.js crypto.generateKeyPairSync()

El método crypto.generateKeyPairSync() es una interfaz de programación de aplicaciones incorporada del módulo criptográfico que se utiliza para generar un nuevo par de claves asimétricas del tipo especificado. Por ejemplo, los tipos de clave admitidos actualmente son RSA, DSA, EC, Ed25519, Ed448, X25519, X448 y DH. Además, si la opción publicKeyEncoding o privateKeyEncoding se indica aquí, entonces esta función actúa como si se hubiera llamado a keyObject.export() en su salida. De lo contrario, la parte particular de la clave se devuelve como KeyObject.
Sin embargo, se sugiere codificar las claves públicas como ‘spki’ y las claves privadas como ‘pkcs8’ con una frase de contraseña fuerte, para mantener la frase de contraseña en secreto.

Sintaxis:

crypto.generateKeyPairSync( type, options )

Parámetros: Este método acepta dos parámetros como se mencionó anteriormente y se describe a continuación:

  • tipo: contiene una string y debe incluir uno o más de los siguientes algoritmos: ‘rsa’, ‘dsa’, ‘ec’, ‘ed25519’, ‘ed448’, ‘x25519’, ‘x448’ o ‘dh’ .
  • opciones: Es de tipo objeto. Puede contener los siguientes parámetros:
    1. modulusLength: contiene un número. Es el tamaño de la clave en bits y se aplica solo al algoritmo RSA y DSA.
    2. publicExponent: contiene un número. Es el exponente público del algoritmo RSA. Su valor por defecto es 0x10001.
    3. divisorLength: Contiene un número. Es el tamaño de q en bits del algoritmo DSA.
    4. namedCurve: contiene una string. Es el nombre de la curva que se utilizará en el algoritmo EC.
    5. prime: contiene un búfer. Es el parámetro principal del algoritmo DH.
    6. primeLength: contiene un número. Es la longitud principal del algoritmo DH en bits.
    7. generador: Contiene un número. Es el generador personalizado del algoritmo DH. Su valor por defecto es 2.
    8. groupName: contiene una string. Es el nombre del grupo Diffie-Hellman del algoritmo DH.
    9. publicKeyEncoding: contiene una string.
    10. privateKeyEncoding: contiene un objeto.

Valor devuelto: Devuelve un nuevo par de claves asimétricas del tipo dado, es decir, devuelve un objeto que incluye una clave privada y una clave pública que contiene la string, el búfer y KeyObject.

Los siguientes ejemplos ilustran el uso del método crypto.generateKeyPairSync() en Node.js:

Ejemplo 1:

// Node.js program to demonstrate the
// crypto.generateKeyPairSync() method
  
// Including generateKeyPairSync from crypto module
const { generateKeyPairSync } = require('crypto');
  
// Including publicKey and  privateKey from 
// generateKeyPairSync() method with its 
// parameters
const { publicKey, privateKey } = generateKeyPairSync('ec', {
  namedCurve: 'secp256k1',    // Options
  publicKeyEncoding: {
    type: 'spki',
    format: 'der'
  },
  privateKeyEncoding: {
    type: 'pkcs8',
    format: 'der'
  }
});
  
// Prints asymmetric key pair
console.log("The public key is: ", publicKey);
console.log();
console.log("The private key is: ", privateKey);

Producción:

The public key is: <Buffer 30 56 30 10 06 07
2a 86 48 ce 3d 02 01 06 052b 81 04 00 0a 03 42
00 04 d9 88 53 5b 21 84 f8 73 14 c8 0b 31 e2 2a
28 a5 4c 8f 68 23 65 84 d9 fe 20 3f ... >

The private key is:  Buffer 30 81 84 02 01 00 30
10 06 07 2a 86 48 ce 3d 02 01 06 05 2b 81 04 00
0a 04 6d 30 6b 02 01 01 04 20 50 4a 87 c3 8c
968f 2b 41 f8 66 99 8a 95 ae 45 75 ... >

Ejemplo 2:

// Node.js program to demonstrate the
// crypto.generateKeyPairSync() method
  
// Including generateKeyPairSync from crypto module
const { generateKeyPairSync } = require('crypto');
  
// Including publicKey and  privateKey from 
// generateKeyPairSync() method with its 
// parameters
const { publicKey, privateKey } = generateKeyPairSync('dsa', {
  modulusLength: 570,
  publicKeyEncoding: {
    type: 'spki',
    format: 'der'
  },
  privateKeyEncoding: {
    type: 'pkcs8',
    format: 'der'
  }
});
  
// Prints asymmetric key pair after encoding
console.log("The public key is: ", 
         publicKey.toString('base64'));
console.log();
console.log("The private key is: ",
         privateKey.toString('base64'));

Producción:

The public key is:  MIIBETCBwAYHKoZIzjgEATCBtAJJAM6084jk1Y6s/0sWQCs3k59AjV1GgAHb8gmB+Lxd/YVid+GySyss8tqhVQl49xho1DHoeJMNsVO6mcRqaSlSCPgmzqGaOvn2mQIdAKL5nGKJjDZF8Pb1SVvwWivhPShJiiHC2JjgrN8CSAqhzmg26/kEHYTZ3yNEGuguDhLvMAPdVG9pjTahLBytn8JQa3yQwLuPB4MzKfJ4d0pvKVZVnkMsatUe2ZkjnKoCjGlzwggd+QNMAAJJAMvsOBUjUKLhpkw4FZP7LIz0yYyOV1yYy84t8qSO42Yf6sNUfK6INnkFbpLHjFLcaDkFPqE5oRCIUqIVOhH0I7jNcGCN2m+ZWg==

The private key is:  MIHnAgEAMIHABgcqhkjOOAQBMIG0AkkAzrTziOTVjqz/SxZAKzeTn0CNXUaAAdvyCYH4vF39hWJ34bJLKyzy2qFVCXj3GGjUMeh4kw2xU7qZxGppKVII+CbOoZo6+faZAh0AovmcYomMNkXw9vVJW/BaK+E9KEmKIcLYmOCs3wJICqHOaDbr+QQdhNnfI0Qa6C4OEu8wA91Ub2mNNqEsHK2fwlBrfJDAu48HgzMp8nh3Sm8pVlWeQyxq1R7ZmSOcqgKMaXPCCB35BB8CHQChh8yXsr/3dx3OdV6JmIWPcHe6dTHh6IOEIHer

Aquí, se utiliza el tipo de clave ‘dsa’.

Referencia: https://nodejs.org/api/crypto.html#crypto_crypto_generatekeypairsync_type_options

Publicación traducida automáticamente

Artículo escrito por nidhi1352singh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *