El método hmac.digest() es una interfaz de programación de aplicaciones incorporada de clase hmac dentro del módulo criptográfico que se utiliza para devolver el valor hash hmac de los datos ingresados.
Sintaxis:
hmac.digest([encoding])
Parámetro: este método toma la codificación como parámetro, que es un parámetro opcional.
Valor de retorno: este método calcula el resumen de hmac de todos los datos que pasan usando hmac.update() . Si no se proporciona codificación , se devuelve Buffer ; de lo contrario, se devuelve String .
Nota: hmac.digest () realiza operaciones finales. Entonces, el objeto hmac se vuelve inutilizable después de llamar a hmac.digest(). Llamar a múltiples hmac.digest() causando un error.
Configuración del proyecto: cree un nuevo proyecto NodeJS y asígnele el nombre hmac
mkdir hmac && cd hmac npm init -y npm install crypto
Ahora cree un archivo .js en el directorio raíz de su proyecto y asígnele el nombre index.js
Ejemplo 1:
index.js
// Node.js program to demonstrate the // crypto hmac.digest() method // Importing crypto module const { createHmac } = require('crypto') // Creating and initializing algorithm // and password const algo = 'sha256' const secret = 'GFG Secret Key' // Create an HMAC instance const hmac = createHmac(algo, secret) // Update the internal state of // the hmac object hmac.update('GeeksForGeeks') // Perform the final operations // No encoding provided // Return calculated hmac hash // value as Buffer let result = hmac.digest() // Check whether returns value is // instance of buffer or not console.log(Buffer.isBuffer(result)) // true // Convert buffer to string result = result.toString('hex') // Print the result console.log(`HMAC hash: ${result}`)
Ejecute el archivo index.js con el siguiente comando:
node index.js
Producción:
verdadero
hash HMAC: c8ae3e09855ae7ac3405ad60d93758edc0ccebc1cf5c529bfb5d058674695c53
Ejemplo 2:
index.js
// Node.js program to demonstrate the // crypto hmac.digest() method // Defining myfile const myfile = process.argv[2]; // Includes crypto and fs module const crypto = require('crypto'); const fs = require('fs'); // Creating and initializing // algorithm and password const algo = 'sha256' const secret = 'GFG Secret Key' // Creating Hmac const hmac = crypto.createHmac(algo, secret); // Creating read stream const readfile = fs.createReadStream(myfile); readfile.on('readable', () => { // Calling read method to read data const data = readfile.read(); if (data) { // Updating hmac.update(data); } else { // Perform the final operations // Encoding provided // Return hmac hash value const result = hmac.digest('base64') // Display result console.log( `HMAC hash value of ${myfile}: ${result}`); } });
Ejecute el archivo index.js con el siguiente comando:
node index.js package.json
Producción:
HMAC hash value of package.json: L5XUUEmtxgmSRyg12gQuKu2lmTJWr8hPYe7vimS5Moc=
Referencia: https://nodejs.org/api/crypto.html#crypto_hmac_digest_encoding