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:
- modulusLength: contiene un número. Es el tamaño de la clave en bits y se aplica solo al algoritmo RSA y DSA.
- publicExponent: contiene un número. Es el exponente público del algoritmo RSA. Su valor por defecto es 0x10001.
- divisorLength: Contiene un número. Es el tamaño de q en bits del algoritmo DSA.
- namedCurve: contiene una string. Es el nombre de la curva que se utilizará en el algoritmo EC.
- prime: contiene un búfer. Es el parámetro principal del algoritmo DH.
- primeLength: contiene un número. Es la longitud principal del algoritmo DH en bits.
- generador: Contiene un número. Es el generador personalizado del algoritmo DH. Su valor por defecto es 2.
- groupName: contiene una string. Es el nombre del grupo Diffie-Hellman del algoritmo DH.
- publicKeyEncoding: contiene una string.
- 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