fromhe crypto.sign() se utiliza para crear la firma de los datos.
Sintaxis:
crypto.sign(algorithm, data, key)
Parámetros: Esta función acepta los siguientes parámetros:
- algoritmo: Es un valor de tipo string. Se puede crear una firma aplicando el nombre de algoritmos de firma, como ‘ SHA256 ‘, en lugar de un algoritmo de resumen.
- data: debe ser un objeto de buffer, TypedArray o DataView . Lea el método Buffer.from() para convertir una string en Buffer.
- clave: debe ser la clave privada de keyObject . Si no tiene ninguna clave privada, puede crear una clave privada y pública utilizando el método crypto.generateKeyPairSync().
Instalación del módulo: Instale el módulo requerido usando el siguiente comando:
npm install crypto
Valor devuelto: Devuelve el valor de la firma basado en el algoritmo, los datos y la clave especificados. El valor devuelto es Buffer por defecto, pero es posible convertirlo en otro formato usando el método buffer.toString() .
Ejemplo 1: Firmar una string.
signature.js
const crypto = require('crypto'); const buffer = require('buffer'); // Create a private key const { privateKey, publicKey } = crypto.generateKeyPairSync('rsa', { modulusLength: 2048, }); // Convert string to buffer const data = Buffer.from("I Love GeeksForGeeks"); // Sign the data and returned signature in buffer const sign = crypto.sign("SHA256", data , privateKey); // Convert returned buffer to base64 const signature = sign.toString('base64'); // Printing the signature console.log(`Signature:\n\n ${signature}`);
Ejecute el archivo signature.js con el siguiente comando:
node signature.js
Producción:
Ejemplo 2: Firmar un archivo.
signature.js
const crypto = require('crypto'); const buffer = require('buffer'); const fs = require('fs'); // Create a private key const { privateKey } = crypto.generateKeyPairSync('rsa', { modulusLength: 2048, }); console.log("Reading File...\n"); // Reading file const text = fs.readFileSync('./doc.txt'); console.log(`File content: ${text}`); // Convert string to buffer const data = Buffer.from(text); // Sign the data and returned signature in buffer const sign = crypto.sign("SHA256", data , privateKey); // Convert returned buffer to base64 const signature = sign.toString('base64'); // Printing the signature console.log(`Signature:\n\n ${signature}`);
Ejecute el archivo signature.js con el siguiente comando:
node signature.js
Producción:
Ejemplo 3: firmar datos JSON.
signature.js
const crypto = require('crypto'); const buffer = require('buffer'); // Create a private key const { privateKey } = crypto.generateKeyPairSync('rsa', { modulusLength: 2048, }); // JSON object const person = { name: "Raktim Banerjee", email:"example@gmail.com", address: "4 main street" } // Convert Stringified json data to buffer const data = Buffer.from( JSON.stringify(person) ); // Sign the data and returned signature in buffer const sign = crypto.sign("SHA256", data , privateKey); // Convert returned buffer to base64 const signature = sign.toString('base64'); // Printing the signature console.log(`Signature:\n\n ${signature}`);
Ejecute el archivo signature.js con el siguiente comando:
node signature.js
Producción:
Referencia: https://nodejs.org/api/crypto.html#crypto_crypto_sign_algorithm_data_key_callback