0.3.4 • Published 9 months ago
@phi-ag/argon2 v0.3.4
Argon2
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