Решение Gwerder не сработает, потому что hash = hmac.read();
происходит до завершения потока.Таким образом, проблемы AngraX.Кроме того, оператор hmac.write
в этом примере не требуется.
Вместо этого сделайте это:
var crypto = require('crypto');
var hmac;
var algorithm = 'sha1';
var key = 'abcdeg';
var text = 'I love cupcakes';
var hash;
hmac = crypto.createHmac(algorithm, key);
// readout format:
hmac.setEncoding('hex');
//or also commonly: hmac.setEncoding('base64');
// callback is attached as listener to stream's finish event:
hmac.end(text, function () {
hash = hmac.read();
//...do something with the hash...
});
Более формально, если хотите, строка
hmac.end(text, function () {
можно написать
hmac.end(text, 'utf8', function () {
, потому что в этом примере текст является строкой utf