1.3.0 • Published 4 years ago

fast-sha256 v1.3.0

Weekly downloads
7,934
License
Unlicense
Repository
github
Last release
4 years ago

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

Installation

You can install fast-sha256-js via NPM:

$ npm install fast-sha256

or download source code.

Usage

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

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.

@solana/solidity@lucaapp/web-cryptosmart-api-booking-servicelempa@panicstyle/finenex-veramo-plugin@infinitebrahmanuniverse/nolb-fast-@everything-registry/sub-chunk-1649joyid-omigamyathhhh2023mintsimple-s3-signersimple-pkce-browsersession-keysspeedrunsstandardwebhooksdiahook@dalongrong/openyonyoucloudrealms-jsriminderechidna.js@ddn/ddn-node-sdk@ddn/crypto-base@ddn/crypto-ed25519@ddn/crypto-nacl@ddn/crypto-sm@ddn/ddn-jseasybasejsslow-ciphered25519test@b-smart/etherless-smart@automerge/automerge-repo@binance-chain/ledger-bridge@binance-chain/tx@benfen/bcs@benfen/bfc.js@bentley/extension-cli@citadeldao/hw-app-alamgu@synonymdev/react-native-lnurlcosmosdb-header-genckb-omiga@bnb-chain/ledger-bridgebitverse-atomicals-jsbitcoinnamesatomicals-jsatomicals-js-masterataraxia-transportatiatomicalsbls12-381-keygen-chia@asgardeo/auth-node@asgardeo/auth-spabtw-js@datagrok-libraries/utilsddn-jsbcc-jsbce-sdk-litebce-sdk-mpbalkansavtrbip322-jssuntinciduntfactom-keystore@skokenes/automerge@stratumn/js-chainscriptangular-oauth2-oidc-noscopeangular-oauth2-oidc_custom_tokendpoint_fixarisen-signing-requestasch-jsasch-webasch-web-test@tinyverse.space/web3storage@textile/security@textile/threads-crypto@veriblock/nodecore-js@veriblock/nodecore-parser@ubcdigital/blocksnippets@ubcdigital/chaints@volcengine/vecasterplayer@zalastax/nolb-fast-@token-io/tpp@token-io/app@token-io/core@acaprojects/a2-uploads@aca-1/a2-composer@acaprojects/a2-composer@affidaty/t2-lib-core@affidaty/trinci-sdk-asazure-common-constructautomerge-phil-dataauthenticityautobahn-corefluence-jssvixfros-transformkey-storezkbob-client-jszkbob-client-js-devtoken-ioveil-lighthbhbhbtesthrflow
1.3.0

4 years ago

1.2.0

4 years ago

1.1.1

4 years ago

1.1.0

6 years ago

1.0.0

8 years ago

0.9.2

10 years ago

0.9.1

10 years ago

0.9.0

10 years ago