@phi-ag/argon2
v0.2.3
Published
Minimal Argon2 WebAssembly SIMD build
Downloads
926
Maintainers
Readme
Argon2
Minimal Argon2 WebAssembly SIMD build for all runtimes inspired by antelle/argon2-browser
Usage
pnpm add @phi-ag/argon2
Examples
Node.js / Deno / Bun
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
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");
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
✓ src/index.bench.ts (2) 23114ms
✓ hash and verify (2) 23112ms
name hz min max mean p75 p99 p995 p999 rme samples
· @phi-ag/argon2 5.4920 174.15 189.89 182.08 185.94 189.89 189.89 189.89 ±0.66% 55 fastest
· hash-wasm 2.8805 335.22 369.88 347.16 352.52 369.88 369.88 369.88 ±0.94% 29
BENCH Summary
@phi-ag/argon2 - src/index.bench.ts > hash and verify
1.91x faster than hash-wasm
See Benchmark Action for the latest results