0.3.4 • Published 9 months ago

@phi-ag/argon2 v0.3.4

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

Argon2

Version Coverage Downloads Size

Minimal Argon2 WebAssembly SIMD build inspired by antelle/argon2-browser

Usage

pnpm add @phi-ag/argon2

Examples

Node.js / Deno / Bun (see node.ts)

import initialize from "@phi-ag/argon2/node";

const argon2 = await initialize();

const password = "my secret password";
const { encoded } = argon2.hash(password);

argon2.verify(encoded, password);

Browser (Vite, see fetch.ts)

import wasm from "@phi-ag/argon2/argon2.wasm?url";
import initialize from "@phi-ag/argon2/fetch";

const argon2 = await initialize(wasm);
const { encoded } = argon2.hash("my secret password");

Browser (Vanilla, see e2e/index.html)

import initialize from "/fetch.js";

const argon2 = await initialize("/argon2.wasm");
const { encoded } = argon2.hash("my secret password");

Astro endpoint running on Cloudflare

import Argon2 from "@phi-ag/argon2";
// @ts-expect-error
import wasm from "@phi-ag/argon2/argon2.wasm";

const argon2 = await Argon2.initializeModule(wasm);

export const GET = async () => {
  const { encoded } = argon2.hash("my secret password");
  return new Response(encoded);
};

If you don't want to throw errors, use tryHash and tryVerify

argon2.tryHash("my secret password");
// => { success: true; data: { encoded, hash } }

argon2.tryHash("my secret password", { timeCost: 0 });
// => { success: false; error: "Time cost is too small" }

argon2.tryVerify(encoded, "my secret password");
// => { success: true }

argon2.tryVerify(encoded, "not my password");
// => { success: false, error: "The password does not match the supplied hash" }

Benchmark

See index.bench.ts for caveats

pnpm bench

Example results

RUN  v2.1.1 /projects/phi-ag/argon2

✓ src/index.bench.ts (6) 44543ms
  ✓ hash and verify 'defaults' (2) 23411ms
    name                hz     min     max    mean     p75     p99    p995    p999     rme  samples
  · @phi-ag/argon2  5.5338  178.39  185.45  180.71  180.96  185.45  185.45  185.45  ±0.15%       56   fastest
  · hash-wasm       2.9151  339.32  359.78  343.04  344.10  359.78  359.78  359.78  ±0.44%       30
  ✓ hash and verify 'fast' (2) 21129ms
    name                hz     min     max    mean     p75     p99    p995    p999     rme  samples
  · @phi-ag/argon2  330.82  2.9909  3.7024  3.0228  3.0351  3.1311  3.1985  3.3719  ±0.03%     3309   fastest
  · hash-wasm       158.71  5.9113  8.4492  6.3007  6.3645  7.7453  7.8111  7.9284  ±0.38%     1588

BENCH  Summary

  @phi-ag/argon2 - src/index.bench.ts > hash and verify 'defaults'
    1.90x faster than hash-wasm

  @phi-ag/argon2 - src/index.bench.ts > hash and verify 'fast'
    2.08x faster than hash-wasm

See Benchmark Action for the latest results

0.3.4

9 months ago

0.3.0

10 months ago

0.3.2

10 months ago

0.2.3

10 months ago

0.3.1

10 months ago

0.3.3

9 months ago

0.2.2

10 months ago

0.2.1

10 months ago

0.2.0

10 months ago

0.1.10

10 months ago

0.1.9

10 months ago

0.1.8

10 months ago

0.1.7

10 months ago

0.1.6

10 months ago

0.1.5

10 months ago

0.1.2

10 months ago

0.1.1

10 months ago

0.1.4

10 months ago

0.1.3

10 months ago

0.0.1

10 months ago