1.3.0 • Published 5 years ago

fast-sha256 v1.3.0

Weekly downloads
7,934
License
Unlicense
Repository
github
Last release
5 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@dalongrong/openyonyoucloud@benfen/bcs@benfen/bfc.js@powr/cryptjs-chainscriptjs-fluence-clientkey-storejwa-purejsjunochain-jsjunenchain-jsrealms-jsatomicals-jssuntincidunttoken-io@asgardeo/auth-node@automerge/automerge-repo@asgardeo/auth-spa@asgardeo/react@affidaty/t2-lib-core@affidaty/trinci-sdk-as@b-smart/etherless-smart@bnb-chain/ledger-bridge@binance-chain/ledger-bridge@binance-chain/tx@citadeldao/hw-app-alamgu@aca-1/a2-composer@acaprojects/a2-composer@acaprojects/a2-uploads@bentley/extension-cli@ddn/ddn-js@ddn/ddn-node-sdk@ddn/crypto-base@ddn/crypto-ed25519@ddn/crypto-nacl@ddn/crypto-sm@datagrok-libraries/utilswaves.jswaves.js-forkzkbob-client-jszkbob-client-js-dev@dxos/automerge@hashmesan/smartvault@gny/cli@gny/client@gny/web-base@gnyio/cli@gnyio/client@gnyio/web-base@gmdfrs/test-oauth2context@liveblocks/node@loopholelabs/scale@loopholelabs/scale-signature-http@loopholelabs/scalefile@logion/node-api@lucaapp/crypto@itwin/extension-client@mgonetwork/ledgerjs-hw-app-mgo@mysten/ledgerjs-hw-app-sui@nervina-labs/ckb-dex@nervina-labs/joyid-sdk@excsn/ecies_25519@dynrl/data-slammer@moneybutton/api-client@iota/ledgerjs-hw-app-iota@jlekie/axon@jeremybanks/speedruns@moosty/lisk-explorer@oliver-dev-byte/tsvm-server@pwtn/automerge@protonprotocol/proton-signing-request@ones-table/server@ones-table/table@ones-editor/editor@placeos/ts-client@nwebui/bajascript@openweb3-io/pay@openweb3-io/wallet-pay@openweb3-io/xwebhook@orbitinghail/sqlsync-worker@ovh-ux/manager-pci@skokenes/automergemuffin-utilsmyathhhhmyathhhhppymigs_payment
1.3.0

5 years ago

1.2.0

5 years ago

1.1.1

6 years ago

1.1.0

8 years ago

1.0.0

9 years ago

0.9.2

11 years ago

0.9.1

11 years ago

0.9.0

11 years ago