Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dchest/fast-sha256-js
SHA-256, HMAC, HKDF and PBKDF2 implementation for JavaScript/TypeScript with typed arrays for modern browsers and Node.js
https://github.com/dchest/fast-sha256-js
Last synced: 12 days ago
JSON representation
SHA-256, HMAC, HKDF and PBKDF2 implementation for JavaScript/TypeScript with typed arrays for modern browsers and Node.js
- Host: GitHub
- URL: https://github.com/dchest/fast-sha256-js
- Owner: dchest
- License: unlicense
- Created: 2014-07-11T14:13:09.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2023-07-12T03:24:11.000Z (over 1 year ago)
- Last Synced: 2024-10-14T12:07:59.267Z (about 1 month ago)
- Language: JavaScript
- Homepage:
- Size: 1.56 MB
- Stars: 133
- Watchers: 9
- Forks: 26
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
fast-sha256-js
==============SHA-256 implementation for JavaScript/TypeScript with typed arrays
that works in modern browsers and Node.js.
Implements the hash function, HMAC, and PBKDF2.Public domain. No warranty.
[![Build Status](https://travis-ci.org/dchest/fast-sha256-js.svg?branch=master)
](https://travis-ci.org/dchest/fast-sha256-js)Installation
------------You can install fast-sha256-js via [NPM](https://www.npmjs.org/):
$ npm install fast-sha256
or [download source code](https://github.com/dchest/fast-sha256-js/releases).
Usage
-----Functions accept and return `Uint8Array`s.
To convert strings, use external library (for example,
[nacl.util](https://github.com/dchest/tweetnacl-util-js/)).### sha256(message)
Returns a SHA-256 hash of the message.
### sha256.hmac(key, message)
Returns an HMAC-SHA-256 of the message for the key.
### sha256.pbkdf2(password, salt, rounds, dkLen)
Returns a key of length dkLen derived using PBKDF2-HMAC-SHA256
from the given password, salt, and the number of rounds.### sha256.hkdf(key, salt, info?, length?)
Returns a key of the given length derived using HKDF as
described in RFC 5869.There are also classes `Hash` and `HMAC`:
### new sha256.Hash()
Constructor for hash instance. Should be used with `new`.
Available methods: `update()`, `digest()`, `reset()`, etc.### new sha256.HMAC(key)
Constructor for HMAC instance. Should be used with `new`.
Available methods: `update()`, `digest()`, `reset()`, etc.See comments in `src/sha256.ts` for details.
Usage with TypeScript
---------------------```typescript
import sha256, { Hash, HMAC } from "fast-sha256";sha256(data) // default export is hash
const h = new HMAC(key); // also Hash and HMAC classes
const mac = h.update(data).digest();// alternatively:
import * as sha256 from "fast-sha256";
sha256.pbkdf2(password, salt, iterations, dkLen); // returns derived key
sha256.hash(data)const hasher = new sha256.Hash();
hasher.update(data1);
hasher.update(data2);
const result = hasher.digest();
```Testing and building
--------------------Install development dependencies:
$ npm install
Build JavaScript, minified version, and typings:
$ npm run build
Run tests:
$ npm test
Run tests on a different source file:
$ SHA256_SRC=sha256.min.js npm test
Run benchmark:
$ npm run bench
(or in a browser, open `tests/bench.html`).
Lint:
$ npm run lint
Notes
-----While this implementation is pretty fast compared to previous generation
implementations, if you need an even faster one, check out
[asmCrypto](https://github.com/vibornoff/asmcrypto.js).