Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sindresorhus/crypto-hash
Tiny hashing module that uses the native crypto API in Node.js and the browser
https://github.com/sindresorhus/crypto-hash
browser crypto hash-functions hashing isomorphic nodejs npm-package sha256
Last synced: about 1 month ago
JSON representation
Tiny hashing module that uses the native crypto API in Node.js and the browser
- Host: GitHub
- URL: https://github.com/sindresorhus/crypto-hash
- Owner: sindresorhus
- License: mit
- Created: 2018-03-07T17:17:29.000Z (over 6 years ago)
- Default Branch: main
- Last Pushed: 2023-10-22T19:30:32.000Z (about 1 year ago)
- Last Synced: 2024-04-13T21:23:07.105Z (7 months ago)
- Topics: browser, crypto, hash-functions, hashing, isomorphic, nodejs, npm-package, sha256
- Language: JavaScript
- Size: 32.2 KB
- Stars: 631
- Watchers: 5
- Forks: 27
- Open Issues: 2
-
Metadata Files:
- Readme: readme.md
- License: license
Awesome Lists containing this project
- awesome-nodejs-cn - crypto-hash - 异步非阻塞哈希 (包 / 安全)
- awesome-nodejs - crypto-hash - Tiny hashing module that uses the native crypto API in Node.js and the browser. ![](https://img.shields.io/github/stars/sindresorhus/crypto-hash.svg?style=social&label=Star) (Repository / Crypto)
- awesome-nodejs-cn - crypto-hash - **star:632** 异步非阻塞散列 (包 / 安全)
- awesome-nodejs - crypto-hash - Async non-blocking hashing. (Packages / Security)
- awesome-node - crypto-hash - Async non-blocking hashing. (Packages / Security)
- awesome-nodejs-cn - crypto-hash - 异步非阻塞哈希. (目录 / 安全相关)
README
# 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 [`node:crypto`](https://nodejs.org/api/crypto.html#crypto_class_hash), while in the browser it uses [`window.crypto`](https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest).
The browser version is only ~300 bytes minified & gzipped.
When used in the browser, it must be in a [secure context (HTTPS)](https://developer.mozilla.org/en-US/docs/Web/API/Crypto/subtle).
This package is for modern browsers. Internet Explorer is not supported.
## Install
```sh
npm install crypto-hash
```## Usage
```js
import {sha256} from 'crypto-hash';console.log(await sha256('🦄'));
//=> '36bf255468003165652fe978eaaa8898e191664028475f83f506dabd95298efc'
```## API
### sha1(input, options?)
### sha256(input, options?)
### sha384(input, options?)
### sha512(input, options?)Returns a `Promise` with a Hex-encoded hash.
*In Node.js, the operation is executed using [`worker_threads`](https://nodejs.org/api/worker_threads.html). A thread is lazily spawned on the first operation and lives until the end of the program execution. It's `unref`ed, so it won't keep the process alive.*
[SHA-1 is insecure](https://stackoverflow.com/a/38045085/64949) and should not be used for anything sensitive.
#### input
Type: `string` [`ArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) [`ArrayBufferView`](https://developer.mozilla.org/en-US/docs/Web/API/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`.
## Related
- [hasha](https://github.com/sindresorhus/hasha) - Hashing in Node.js made simple