El método crypto.publicEncrypt() es una interfaz de programación de aplicaciones incorporada del módulo criptográfico que se utiliza para cifrar el contenido declarado del búfer con el parámetro ‘clave’.
Sintaxis:
crypto.publicEncrypt( key, buffer )
Parámetros: Este método acepta dos parámetros como se mencionó anteriormente y se describe a continuación:
- clave: este parámetro contiene el tipo de datos Objeto, string, Búfer o KeyObject y contiene cinco parámetros que son los siguientes:
- clave: Es una clave pública codificada ‘PEM’ o una clave privada. Es de tipo string, Buffer y KeyObject .
- oaepHash: es la función hash de tipo string que se utiliza para el relleno ‘OAEP’. Y el valor predeterminado es ‘sha1’.
- oaepLabel: es la etiqueta que se utiliza para el relleno ‘OAEP’. Y si no se especifica, entonces no se usa ninguna etiqueta. Es de tipo Buffer, TypedArray o DataView .
- frase de contraseña: es una frase de contraseña opcional para la clave privada que es una string o un búfer.
- padding: es un valor de relleno opcional que se define en crypto.constants, que puede ser crypto.constants.RSA_NO_PADDING, crypto.constants.RSA_PKCS1_PADDING o crypto.constants.RSA_PKCS1_OAEP_PADDING. Es de tipo crypto.constants .
- buffer: es de tipo Buffer, TypedArray o DataView .
Valor de retorno: Devuelve un nuevo Buffer con el contenido encriptado.
El siguiente ejemplo ilustra el uso del método crypto.publicEncrypt() en Node.js:
Ejemplo 1:
// Node.js program to demonstrate the // crypto.publicEncrypt() method // Including crypto and fs module const crypto = require('crypto'); const fs = require("fs"); // Using a function generateKeyFiles function generateKeyFiles() { const keyPair = crypto.generateKeyPairSync('rsa', { modulusLength: 520, publicKeyEncoding: { type: 'spki', format: 'pem' }, privateKeyEncoding: { type: 'pkcs8', format: 'pem', cipher: 'aes-256-cbc', passphrase: '' } }); // Creating public key file fs.writeFileSync("public_key", keyPair.publicKey); } // Generate keys generateKeyFiles(); // Creating a function to encrypt string function encryptString (plaintext, publicKeyFile) { const publicKey = fs.readFileSync(publicKeyFile, "utf8"); // publicEncrypt() method with its parameters const encrypted = crypto.publicEncrypt( publicKey, Buffer.from(plaintext)); return encrypted.toString("base64"); } // Defining a text to be encrypted const plainText = "GfG"; // Defining encrypted text const encrypted = encryptString(plainText, "./public_key"); // Prints plain text console.log("Plaintext:", plainText); // Prints encrypted text console.log("Encrypted: ", encrypted);
Producción:
Plaintext: GfG Encrypted: l0touwFaNv1DIgPE365VQD0G4rg+IbRD5G6IBQ1arLgWtFOStKO7duYJ6/JzlOJl3eBG7obqzAEJ0V2WrxtYRTg=
Ejemplo 2:
// Node.js program to demonstrate the // crypto.publicEncrypt() method // Including crypto and fs module const crypto = require('crypto'); const fs = require("fs"); // Using a function generateKeyFiles function generateKeyFiles() { const keyPair = crypto.generateKeyPairSync('rsa', { modulusLength: 520, publicKeyEncoding: { type: 'spki', format: 'pem' }, privateKeyEncoding: { type: 'pkcs8', format: 'pem', cipher: 'aes-256-cbc', passphrase: '' } }); // Creating public key file fs.writeFileSync("public_key", keyPair.publicKey); } // Generate keys generateKeyFiles(); // Creating a function to encrypt string function encryptString (plaintext, publicKeyFile) { const publicKey = fs.readFileSync(publicKeyFile, "utf8"); // publicEncrypt() method with its parameters const encrypted = crypto.publicEncrypt( publicKey, Buffer.from(plaintext)); return encrypted; } // Defining a text to be encrypted const plainText = "Hello!"; // Defining encrypted text const encrypted = encryptString(plainText, "./public_key"); // Prints plain text console.log("Plaintext:", plainText); // Prints buffer console.log("Buffer: ", encrypted);
Producción:
Plaintext: Hello! Buffer: <Buffer 1b 2a c7 4d 10 44 45 8e 9d e6 53 9d 8a 5e 39 0f ea e2 96 00 d7 d3 b3 eb 54 7e 74 7d a4 62 b8 eb 68 85 cb 8e 85 a5 f7 71 2f b7 93 d6 14 1c 38 cd 45 85 ... >
Referencia: https://nodejs.org/api/crypto.html#crypto_crypto_publicencrypt_key_buffer
Publicación traducida automáticamente
Artículo escrito por nidhi1352singh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA