Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sindresorhus/hasha
Hashing made simple. Get the hash of a buffer/string/stream/file.
https://github.com/sindresorhus/hasha
Last synced: 27 days ago
JSON representation
Hashing made simple. Get the hash of a buffer/string/stream/file.
- Host: GitHub
- URL: https://github.com/sindresorhus/hasha
- Owner: sindresorhus
- License: mit
- Created: 2015-05-23T09:23:44.000Z (over 9 years ago)
- Default Branch: main
- Last Pushed: 2023-11-11T12:43:06.000Z (12 months ago)
- Last Synced: 2024-04-14T10:50:08.210Z (7 months ago)
- Language: JavaScript
- Homepage:
- Size: 103 KB
- Stars: 944
- Watchers: 12
- Forks: 41
- Open Issues: 3
-
Metadata Files:
- Readme: readme.md
- License: license
- Security: .github/security.md
Awesome Lists containing this project
- awesome-nodejs-cn - hasha - 使散列变得简单,获取缓冲区/字符串/流/文件的哈希 (包 / 其他)
- awesome-nodejs-cn - hasha - **star:948** 散列法简单获取缓冲区/字符串/流/文件的散列 (包 / 杂项)
- awesome-nodejs - hasha - Hashing made simple. Get the hash of a buffer/string/stream/file. (Packages / Miscellaneous)
- awesome-nodejs - hasha - Hashing made simple. Get the hash of a buffer/string/stream/file. - ★ 635 (Miscellaneous)
- awesome-node - hasha - Hashing made simple. Get the hash of a buffer/string/stream/file. (Packages / Miscellaneous)
- awesome-nodejs-cn - hasha - 使散列变得简单。获取缓冲区/字符串/流/文件的哈希. (目录 / 其他)
README
> Hashing made simple. Get the hash of a buffer/string/stream/file.
Convenience wrapper around the core [`crypto` Hash class](https://nodejs.org/api/crypto.html#crypto_crypto_createhash_algorithm) with simpler API and better defaults.
## Install
```sh
npm install hasha
```## Usage
```js
import {hash} from 'hasha';await hash('unicorn');
//=> 'e233b19aabc7d5e53826fb734d1222f1f0444c3a3fc67ff4af370a66e7cadd2cb24009f1bc86f0bed12ca5fcb226145ad10fc5f650f6ef0959f8aadc5a594b27'
```## API
See the Node.js [`crypto` docs](https://nodejs.org/api/crypto.html#crypto_crypto_createhash_algorithm_options) for more about hashing.
### hash(input, options?)
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.
### hashSync(input, options?)
Returns a hash.
#### input
Type: `Uint8Array | string | Array | NodeJS.ReadableStream` *(`NodeJS.ReadableStream` is not available in `hashSync`)*
The value 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'`The encoding of the returned hash.
##### algorithm
Type: `string`\
Default: `'sha512'`\
Values: `'md5' | 'sha1' | 'sha256' | 'sha512'` *([Platform dependent](https://nodejs.org/api/crypto.html#crypto_crypto_createhash_algorithm_options))**The `md5` algorithm is good for [file revving](https://github.com/sindresorhus/rev-hash), but you should never use `md5` or `sha1` for anything sensitive. [They're insecure.](https://security.googleblog.com/2014/09/gradually-sunsetting-sha-1.html)*
### hashFile(filePath, options?)
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.
```js
import {hashFile} from 'hasha';// Get the MD5 hash of an image
await hashFile('unicorn.png', {algorithm: 'md5'});
//=> '1abcb33beeb811dca15f0ac3e47b88d9'
```### hashFileSync(filePath, options?)
Returns the calculated file hash.
```js
import {hashFileSync} from 'hasha';// Get the MD5 hash of an image
hashFileSync('unicorn.png', {algorithm: 'md5'});
//=> '1abcb33beeb811dca15f0ac3e47b88d9'
```### hashingStream(options?)
Returns a [hash transform stream](https://nodejs.org/api/crypto.html#crypto_class_hash).
```js
import {hashingStream} from 'hasha';// Hash the process input and output the hash sum
process.stdin.pipe(hashingStream()).pipe(process.stdout);
```## Related
- [hasha-cli](https://github.com/sindresorhus/hasha-cli) - CLI for this module
- [crypto-hash](https://github.com/sindresorhus/crypto-hash) - Tiny hashing module that uses the native crypto API in Node.js and the browser
- [hash-object](https://github.com/sindresorhus/hash-object) - Get the hash of an object
- [md5-hex](https://github.com/sindresorhus/md5-hex) - Create a MD5 hash with hex encoding