Skip to content

sindresorhus/hash-object

hash-object

Get the hash of an object

Install

npm install hash-object

Usage

import hashObject from 'hash-object';

hashObject({'🦄': '🌈'}, {algorithm: 'sha1'});
//=> '3de3bc784035b559784fc276f47493d60555fba3'

An async version that uses the Web Crypto API is also available. This works in browsers, edge runtimes, and Node.js 20+:

import hashObject from 'hash-object/async';

await hashObject({'🦄': '🌈'}, {algorithm: 'sha1'});
//=> '3de3bc784035b559784fc276f47493d60555fba3'

Note

The async version only supports sha1, sha256, sha384, sha512 algorithms and hex, base64, buffer encodings.

API

hashObject(object, options?)

The output is deterministic for repeated runs on the same Node.js / browser version. It should also be fairly deterministic across JavaScript engines. However, because the stability of grapheme clusters across Unicode versions is not guaranteed, determinism cannot be guaranteed across JavaScript engines and versions. There are also other factors that can make it nondeterministic, like values with floating point numbers and dates.

object

Type: object

options

Type: object

encoding

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

The encoding of the returned hash.

algorithm

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

The async version only supports 'sha1', 'sha256', 'sha384', and 'sha512'.

Don't use 'md5' or 'sha1' for anything sensitive. They're insecure.

Related

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

About

Get the hash of an object

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors