You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
SHA-256 implementation for JavaScript/TypeScript with typed arrays
that works in modern browsers and Node.js.
Implements the hash function, HMAC, and PBKDF2.
Functions accept and return Uint8Arrays.
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
importsha256,{Hash,HMAC}from"fast-sha256";sha256(data)// default export is hashconsth=newHMAC(key);// also Hash and HMAC classesconstmac=h.update(data).digest();// alternatively:import*assha256from"fast-sha256";sha256.pbkdf2(password,salt,iterations,dkLen);// returns derived keysha256.hash(data)consthasher=newsha256.Hash();hasher.update(data1);hasher.update(data2);constresult=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.
About
SHA-256, HMAC, HKDF and PBKDF2 implementation for JavaScript/TypeScript with typed arrays for modern browsers and Node.js