Hmac类


Hmac 类是用于创建加密的 HMAC 摘要的工具类。它可以以两种方式之一使用:

  • 作为可读和可写的,写入数据并在可读端产生计算后的 HMAC 摘要。

  • 使用 hmac.update()hmac.digest() 产生计算后的 HMAC 摘要。

crypto.createHmac() 方法用于创建 Hmac 实例。Hmac 对象无法直接使用 new 关键词创建。

示例:将 Hmac 对象用作流:

  1. const crypto = require('crypto');
  2. const hmac = crypto.createHmac('sha256', 'a secret');
  3. hmac.on('readable', () => {
  4. var data = hmac.read();
  5. if (data)
  6. console.log(data.toString('hex'));
  7. // Prints:
  8. // 7fd04df92f636fd450bc841c9418e5825c17f33ad9c87c518115a45971f7f77e
  9. });
  10. hmac.write('some data to hash');
  11. hmac.end();

示例:使用 Hmac 并导流:

  1. const crypto = require('crypto');
  2. const fs = require('fs');
  3. const hmac = crypto.createHmac('sha256', 'a secret');
  4. const input = fs.createReadStream('test.js');
  5. input.pipe(hmac).pipe(process.stdout);

示例:使用 hmac.update()hmac.digest() 方法:

  1. const crypto = require('crypto');
  2. const hmac = crypto.createHmac('sha256', 'a secret');
  3. hmac.update('some data to hash');
  4. console.log(hmac.digest('hex'));
  5. // Prints:
  6. // 7fd04df92f636fd450bc841c9418e5825c17f33ad9c87c518115a45971f7f77e

hmac.update(data[, input_encoding])

使用给定的 data 更新 HMAC 内容,给出的 input_encoding 编码,可以是 'utf8''ascii''binary'。如果没有提供 encoding,同时 data 是一个字符串,将强制使用 'binary' 编码。如果 data 是一个 Buffer,那么 input_encoding 参数会被忽略。

当它作为流时,可以在新数据上多次调用。

hmac.digest([encoding])

计算所有传入的的数据的 HMAC 摘要(使用 hmac.update() 方法)。encoding 可以是 'hex''binary''base64'。如果提供了 encoding,会返回一个字符串;否则返回一个 Buffer

在调用 hmac.digest() 方法之后,Hmac 对象将不能再次使用。多次调用将导致抛出错误。