Package Exports
- fast-sha256
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (fast-sha256) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
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.
Installation
You can install fast-sha256-js via NPM:
$ npm install fast-sha256
Usage
Functions accept and return Uint8Array
s.
To convert strings, use external library (for example,
nacl.util).
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
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.