I want to create a hash of
I love cupcakes (signed with the key
How can I create that hash, using Node.js Crypto?
Documentation for crypto: http://nodejs.org/api/crypto.html
var crypto = require('crypto') , text = 'I love cupcakes' , key = 'abcdeg' , hash hash = crypto.createHmac('sha1', key).update(text).digest('hex')
A few years ago it was said that
digest() were legacy methods and the new streaming API approach was introduced. Now the docs say that either method can be used. For example:
var crypto = require('crypto'); var text = 'I love cupcakes'; var secret = 'abcdeg'; //make this your secret!! var algorithm = 'sha1'; //consider using sha256 var hash, hmac; // Method 1 - Writing to a stream hmac = crypto.createHmac(algorithm, secret); hmac.write(text); // write in to the stream hmac.end(); // can't read from the stream until you call end() hash = hmac.read().toString('hex'); // read out hmac digest console.log("Method 1: ", hash); // Method 2 - Using update and digest: hmac = crypto.createHmac(algorithm, secret); hmac.update(text); hash = hmac.digest('hex'); console.log("Method 2: ", hash);
Tested on node v6.2.2 and v7.7.2
See https://nodejs.org/api/crypto.html#crypto_class_hmac. Gives more examples for using the streaming approach.