Hashing module that uses the native crypto API in Node.js

crypto-hash

Tiny hashing module that uses the native crypto API in Node.js and the browser

Useful when you want the same hashing API in all environments. My cat calls it isomorphic.

In Node.js it uses require('crypto'), while in the browser it uses window.crypto.

The browser version is only ~300 bytes minified & gzipped.

Install

$ npm install crypto-hash

Usage

const {sha256} = require('crypto-hash');

(async () => {
	console.log(await sha256('🦄'));
	//=> '5df82936cbf0864be4b7ba801bee392457fde9e4'
})();

API

sha1(input, [options])

sha256(input, [options])

sha384(input, [options])

sha512(input, [options])

Returns a Promise<string> with a hex-encoded hash.

In Node.js 12 or later, the operation is executed using worker_threads. A thread is lazily spawned on the first operation and lives until the end of the program execution. It's unrefed, so it won't keep the process alive.

SHA-1 is insecure and should not be used for anything sensitive.

input

Type: string ArrayBuffer ArrayBufferView

options

Type: object

outputFormat

Type: string
Values: hex buffer
Default: hex

Setting this to buffer makes it return an ArrayBuffer instead of a string.

Hashing made simple. Get the hash of a buffer/string/stream/file.

Build Status

Convenience wrapper around the core crypto Hash class with simpler API and better defaults.

Install

$ npm install hasha

Usage

const hasha = require('hasha');

hasha('unicorn');
//=> 'e233b19aabc7d5e53826fb734d1222f1f0444c3a3fc67ff4af370a66e7cadd2cb24009f1bc86f0bed12ca5fcb226145ad10fc5f650f6ef0959f8aadc5a594b27'
const hasha = require('hasha');

(async () => {
	console.log(await hasha.async('unicorn'));
	//=> 'e233b19aabc7d5e53826fb734d1222f1f0444c3a3fc67ff4af370a66e7cadd2cb24009f1bc86f0bed12ca5fcb226145ad10fc5f650f6ef0959f8aadc5a594b27'
})();
const hasha = require('hasha');

// Hash the process input and output the hash sum
process.stdin.pipe(hasha.stream()).pipe(process.stdout);
const hasha = require('hasha');

(async () => {
	// Get the MD5 hash of an image
	const hash = await hasha.fromFile('unicorn.png', {algorithm: 'md5'});

	console.log(hash);
	//=> '1abcb33beeb811dca15f0ac3e47b88d9'
})();

API

See the Node.js crypto docs for more about hashing.

hasha(input, options?)

Returns a hash.

input

Type: Buffer | string | Array<Buffer | string>

Buffer you want to hash.

While strings are supported you should prefer buffers as they're faster to hash. Although if you already have a string you should not convert it to a buffer.

Pass an array instead of concatenating strings and/or buffers. The output is the same, but arrays do not incur the overhead of concatenation.

options

Type: object

encoding

Type: string
Default: 'hex'
Values: 'hex' | 'base64' | 'buffer' | 'latin1'

Encoding of the returned hash.

algorithm

Type: string
Default: 'sha512'
Values: 'md5' | 'sha1' | 'sha256' | 'sha512' (Platform dependent)

The md5 algorithm is good for file revving, but you should never use md5 or sha1 for anything sensitive. They're insecure.

hasha.async(input, options?)

In Node.js 12 or later, the operation is executed using worker_threads. A thread is lazily spawned on the first operation and lives until the end of the program execution. It's unrefed, so it won't keep the process alive.

Returns a hash asynchronously.

hasha.stream(options?)

Returns a hash transform stream.

hasha.fromStream(stream, options?)

Returns a Promise for the calculated hash.

hasha.fromFile(filepath, options?)

In Node.js 12 or later, the operation is executed using worker_threads. A thread is lazily spawned on the first operation and lives until the end of the program execution. It's unrefed, so it won't keep the process alive.

Returns a Promise for the calculated file hash.

hasha.fromFileSync(filepath, options?)

Returns the calculated file hash.

Related

  • hasha-cli - CLI for this module
  • crypto-hash - Tiny hashing module that uses the native crypto API in Node.js and the browser
  • hash-obj - Get the hash of an object
  • md5-hex - Create a MD5 hash with hex encoding



Popular posts from this blog

Bitcoin Generator Tools - Mining Pool Injectors

FreeBitco.in Script 200$ Hourly

Open Source For Blockchain Developer