crypto.createHash(algorithm[, options])


创建并返回一个 Hash 对象,该对象可用于生成哈希摘要(使用给定的 algorithm)。 可选的 options 参数控制流的行为。 对于 XOF 哈希函数(例如 'shake256'), outputLength 选项可用于指定所需的输出长度(以字节为单位)。

algorithm 取决于平台上的 OpenSSL 的版本所支持的可用算法。 例如 'sha256''sha512' 等。 在 OpenSSL 的最新版本中, openssl list -digest-algorithms(在较旧版本的 OpenSSL 中是 openssl list-message-digest-algorithms)将会显示可用的摘要算法。

示例,生成一个文件的 sha256 总和:

const filename = process.argv[2];
const crypto = require('crypto');
const fs = require('fs');

const hash = crypto.createHash('sha256');

const input = fs.createReadStream(filename);
input.on('readable', () => {
  // 哈希流只会生成一个元素。
  const data = input.read();
  if (data)
    hash.update(data);
  else {
    console.log(`${hash.digest('hex')} ${filename}`);
  }
});

Creates and returns a Hash object that can be used to generate hash digests using the given algorithm. Optional options argument controls stream behavior. For XOF hash functions such as 'shake256', the outputLength option can be used to specify the desired output length in bytes.

The algorithm is dependent on the available algorithms supported by the version of OpenSSL on the platform. Examples are 'sha256', 'sha512', etc. On recent releases of OpenSSL, openssl list -digest-algorithms (openssl list-message-digest-algorithms for older versions of OpenSSL) will display the available digest algorithms.

Example: generating the sha256 sum of a file

const filename = process.argv[2];
const crypto = require('crypto');
const fs = require('fs');

const hash = crypto.createHash('sha256');

const input = fs.createReadStream(filename);
input.on('readable', () => {
  // Only one element is going to be produced by the
  // hash stream.
  const data = input.read();
  if (data)
    hash.update(data);
  else {
    console.log(`${hash.digest('hex')} ${filename}`);
  }
});