0.0.5 • Published 9 days ago

bcrypt-edge v0.0.5

Weekly downloads
-
License
-
Repository
github
Last release
9 days ago

bcrypt-edge

npm

ESM Edge/worker conversion for bcrypt.js.

Description

This is a re-implementation of Bcrypt specifically for web workers, in particular Cloudflare. The following differences can be observed from the source library:

  • The package is now an ESM, so it can easily be bundled
  • All async methods have been removed. These don't work in a Web Worker environment, so they were removed.
    • Perhaps there is some method of re-introducing them, but the originals relied upon process.nextTick
    • Additionally in a worker scenario, each request is theoretically isolated anyway so async isn't as impactful
  • Unit tests were preserved/translated as best as they could be
    • Tests are run against the Cloudflare crypto compatibility layer via Miniflare
    • No discrepencies between the original implementation and this one have been observed

Care was taken to disturb as little as possible with the initial implementation.

Usage

Usage is similar to the original library, except it's an ESM worker module now and has no async methods.

import {
  genSaltSync,
  hashSync,
  compareSync,
  getRounds,
  getSaltSync,
} from 'bcrypt-edge';

// Hashing
const salt = bcrypt.genSaltSync(10);
const hash = bcrypt.hashSync('B4c0//', salt);

// Create Salt+Hash in one line
const hash = bcrypt.hashSync('bacon', 8);

// Comparing
bcrypt.compareSync('B4c0//', hash); // true
bcrypt.compareSync('not_bacon', hash); // false

Benchmarks

Running bcrypt-edge in Miniflare against the original bcrypt package, the benchmarks are as follows. It is very likely that platform specific inhancements could be made to improve performace of bcrypt-edge.

LibraryRoundsHash Time
bcryptjs820ms
bcrypt-edge835ms
bcryptjs940ms
bcrypt-edge972ms
bcryptjs1081ms
bcrypt-edge10143ms
bcryptjs11161ms
bcrypt-edge11278ms
bcryptjs12326ms
bcrypt-edge12564ms
bcryptjs13653ms
bcrypt-edge131138ms
bcryptjs141316ms
bcrypt-edge142266ms
bcryptjs152646ms
bcrypt-edge154498ms
0.0.5

9 days ago

0.0.4

9 days ago

0.0.3

8 months ago

0.0.2

8 months ago

0.0.1

8 months ago