scrypto

An async JavaScript Scrypt implementation using Web Cryptography APIs for PBKDF2.

Getting started

Import the scrypt function and use:

import { scrypt } from "https://deno.land/x/scrypto@v1.0.0/main.ts";

const result = await scrypt("password", "salt", {
  N: 16384,
  r: 8,
  p: 1,
  dkLen: 64,
});

CLI

Alternatively, you can use it directly from the CLI by using deno run:

deno run https://deno.land/x/scrypto@v1.0.0/main.ts <password> <salt>

You can also install it globally using the following:

deno install --allow-net=deno.land -n scrypt https://deno.land/x/scrypto@v1.0.0/main.ts

Then, the package is available to run:

scrypt <password> <salt>

Benchmarks

The following benchmarks are done with deno bench --unstable scrypt_bench.ts using default parameters:

cpu: Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
runtime: deno 1.27.0 (x86_64-apple-darwin)

file:///Users/sntran/scrypto/scrypt_bench.ts
benchmark                   time (avg)             (min … max)       p75       p99      p995
-------------------------------------------------------------- -----------------------------
npm/scryptsy            813.46 ms/iter (807.32 ms … 820.44 ms) 816.48 ms 820.44 ms 820.44 ms
npm/scrypt.js              1.53 s/iter       (1.51 s … 1.54 s)    1.53 s    1.54 s    1.54 s
std/node/crypto/scrypt  754.79 ms/iter (753.04 ms … 755.72 ms) 755.39 ms 755.72 ms 755.72 ms
x/scrypt                 148.1 ms/iter  (147.64 ms … 148.5 ms) 148.22 ms  148.5 ms  148.5 ms
scrypto                 240.35 ms/iter  (236.89 ms … 259.5 ms) 239.72 ms  259.5 ms  259.5 ms

Development

Run tests:

deno test