1.3.0 • Published 6 years ago

fast-sha256 v1.3.0

Weekly downloads
7,934
License
Unlicense
Repository
github
Last release
6 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-omigamyathhhh2023mintsvixwaa-jswf-jsinterpspeedrunsstandardwebhooksveil-light@benfen/bcs@benfen/bfc.js@powr/cryptjs-chainscriptjs-fluence-clientkey-storejwa-purejsjunochain-jsjunenchain-jshw-app-alamguhrflowhbhbhbtestlemon-todaq-liblogion-apiknotfree-ts-lib@veriblock/nodecore-js@veriblock/nodecore-parser@ubcdigital/blocksnippets@ubcdigital/chaints@token-io/app@token-io/core@token-io/tpp@textile/security@textile/threads-crypto@tinyverse.space/web3storage@volcengine/vecasterplayer@zalastax/nolb-fast-angular-oauth2-oidc-noscopeangular-oauth2-oidc_custom_tokendpoint_fixatiatomicals-js-masterazure-common-constructavtrasch-webasch-jsasch-web-testarisen-signing-requestataraxia-transport@dynrl/data-slammer@gnyio/web-base@gny/web-base@gnyio/cli@gnyio/client@gny/cli@gny/client@citadeldao/hw-app-alamgu@b-smart/etherless-smart@aca-1/a2-composer@acaprojects/a2-composer@acaprojects/a2-uploads@affidaty/t2-lib-core@affidaty/trinci-sdk-as@hashmesan/smartvault@creately/automerge-reporealms-jsatomicals-jssuntincidunttoken-io@bnb-chain/ledger-bridge@binance-chain/ledger-bridge@binance-chain/tx@bentley/extension-cliwaves.jswaves.js-forkzkbob-client-jszkbob-client-js-dev@gmdfrs/test-oauth2context@liveblocks/node@loopholelabs/scale@loopholelabs/scale-signature-http@loopholelabs/scalefile@logion/node-api@mysten/ledgerjs-hw-app-sui@nervina-labs/ckb-dex@nervina-labs/joyid-sdk@moosty/lisk-explorer@protonprotocol/proton-signing-request@placeos/ts-clientmuffin-utilsmyathhhhmyathhhhppymigs_paymentmmeddlenasgo-jsordnames
1.3.0

6 years ago

1.2.0

6 years ago

1.1.1

6 years ago

1.1.0

8 years ago

1.0.0

10 years ago

0.9.2

11 years ago

0.9.1

11 years ago

0.9.0

11 years ago