类:Hash


¥Class: Hash

Hash 类是用于创建数据的哈希摘要的实用工具。它可以通过以下两种方式之一使用:

¥The Hash class is a utility for creating hash digests of data. It can be used in one of two ways:

  • 作为可读可写的 ,写入数据以在可读端生成计算的哈希摘要,或者

    ¥As a stream that is both readable and writable, where data is written to produce a computed hash digest on the readable side, or

  • 使用 hash.update()hash.digest() 方法生成计算的哈希。

    ¥Using the hash.update() and hash.digest() methods to produce the computed hash.

crypto.createHash() 方法用于创建 Hash 实例。Hash 对象不能直接使用 new 关键字创建。

¥The crypto.createHash() method is used to create Hash instances. Hash objects are not to be created directly using the new keyword.

示例:使用 Hash 对象作为流:

¥Example: Using Hash objects as streams:

const {
  createHash
} = await import('node:crypto');

const hash = createHash('sha256');

hash.on('readable', () => {
  // Only one element is going to be produced by the
  // hash stream.
  const data = hash.read();
  if (data) {
    console.log(data.toString('hex'));
    // Prints:
    //   6a2da20943931e9834fc12cfe5bb47bbd9ae43489a30726962b576f4e3993e50
  }
});

hash.write('some data to hash');
hash.end();const {
  createHash,
} = require('node:crypto');

const hash = createHash('sha256');

hash.on('readable', () => {
  // Only one element is going to be produced by the
  // hash stream.
  const data = hash.read();
  if (data) {
    console.log(data.toString('hex'));
    // Prints:
    //   6a2da20943931e9834fc12cfe5bb47bbd9ae43489a30726962b576f4e3993e50
  }
});

hash.write('some data to hash');
hash.end();

示例:使用 Hash 和管道流:

¥Example: Using Hash and piped streams:

import { createReadStream } from 'node:fs';
import { stdout } from 'node:process';
const { createHash } = await import('node:crypto');

const hash = createHash('sha256');

const input = createReadStream('test.js');
input.pipe(hash).setEncoding('hex').pipe(stdout);const { createReadStream } = require('node:fs');
const { createHash } = require('node:crypto');
const { stdout } = require('node:process');

const hash = createHash('sha256');

const input = createReadStream('test.js');
input.pipe(hash).setEncoding('hex').pipe(stdout);

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

¥Example: Using the hash.update() and hash.digest() methods:

const {
  createHash
} = await import('node:crypto');

const hash = createHash('sha256');

hash.update('some data to hash');
console.log(hash.digest('hex'));
// Prints:
//   6a2da20943931e9834fc12cfe5bb47bbd9ae43489a30726962b576f4e3993e50const {
  createHash,
} = require('node:crypto');

const hash = createHash('sha256');

hash.update('some data to hash');
console.log(hash.digest('hex'));
// Prints:
//   6a2da20943931e9834fc12cfe5bb47bbd9ae43489a30726962b576f4e3993e50