0.2.0 • Published 4 years ago

@cryptography/sha1 v0.2.0

Weekly downloads
7
License
GPL-3.0-or-later
Repository
github
Last release
4 years ago

@cryptography/sha256

Bundlephobia Coverage Travis CI

High-performance synchronous SHA-1 implementation for JavaScript. Optimized for browsers.

Features

  • Blazing fast
  • Ultra lightweight
  • ECMAScript 3-6
  • Typed
  • Tested`

Setup

Package is available through npm and yarn

npm install @cryptography/sha1
yarn add @cryptography/sha1

When you should use @cryptography/sha1

  • Hashing small inputs (< 5kb)
  • Key derivation functions
  • 100% browser support required

⚠️ When you should not use this (WebCrypto API preferred cases)

  • Hashing files (> 5kb)
  • Concurrent hashing large amount of messages

Usage

This package is optimized for small byte inputs (<10kb).

Also, it is highly recommended to run CPU-intensive tasks in a Web Worker.

import sha1 from '@cryptography/sha1'

// as Uint32Array([0xa8d627d9, 0x3f518e90, 0x96b6f40e, 0x36d27b76, 0x60fa26d3])
const array = sha1('Hello World!') 

// as hex-string: "a8d627d93f518e9096b6f4...."
const hex = sha1('Hello World!', 'hex')

// as binary string: "ÄïükYo‡UH½LÛ,Zß..."
const raw = sha1('Hello World!', 'binary')

// UInt32Array as input
const buf = new Uint32Array([0xa8d627d9, 0x3f518e90, 0x96b6f40e, 0x36d27b76, 0x60fa26d3, 0x18ef1adc, 0x43da750e, 0x49ebe4be]);
sha1(buf)

For hashing large files or other data chuncks use stream() to create a hashing stream.

sha1.stream().update('Hello World!').digest();

Benchmarks

Faster than forge, sjcl, Rusha and WebCrypto API in sequence mode.

Try yourself

Contributing

Contributions are welcome! Contribution guidelines will be published soon.