Audience

Developers

Install packages, use the CLI, port languages, and verify bit-exact digests. Prefer Argon2id or platform APIs for real password storage — ForgeHash is experimental.

Start with B3 ($forgeh$v=1$) unless you are intentionally working on the ForgeHash-X sandbox.

Install from registries

Experimental prereleases on NuGet, PyPI, npm, and crates.io. C++ / PHP ports stay source-only (Rust C ABI).

RegistryB3X
NuGet ForgeHash · ForgeHash.Cli ForgeHashX
PyPI forgeh forgehx
npm forgeh forgehx
crates.io forgeh forgehx
# .NET
dotnet add package ForgeHash --prerelease
dotnet add package ForgeHashX --prerelease
dotnet tool install -g ForgeHash.Cli --prerelease

# Python / Node / Rust
pip install forgeh --pre
pip install forgehx --pre
npm install forgeh@experimental
npm install forgehx@experimental
cargo add forgeh --precise 1.0.0-experimental
cargo add forgehx --precise 0.1.0-experimental

Publisher ops (Trusted Publishing): docs/PUBLISHING.md. Language trees: Languages. API walkthrough: .NET usage.

CLI (forgeh)

# Help
forgeh --help

# Hash / verify — B3
echo -n 'correct horse battery staple' | forgeh hash --algo b3 --password-stdin
echo -n 'correct horse battery staple' | forgeh verify '$forgeh$v=1$...' --password-stdin

# Hash / verify — X sandbox (Toy defaults: m=1024)
echo -n 'correct horse battery staple' | forgeh hash --algo x --password-stdin
echo -n 'correct horse battery staple' | forgeh verify '$forgehx$v=0$...' --password-stdin

# Matched-cost timing (same m/t/p)
forgeh benchmark --algo b3 --memory 8192 --iterations 1 --samples 5
forgeh benchmark --algo x --memory 8192 --iterations 1 --samples 5

# Frozen-style vector dump
forgeh vector --algo x --password-hex "" --salt-hex 00000000000000000000000000000000 --memory 1024

# From repo without installing the tool
dotnet run --project src/ForgeHash.Cli -c Release -- hash --algo b3 --password-stdin
  1. 1
    .NET usage

    HashPassword / VerifyPassword / NeedsRehash, Development vs Interactive profiles.

  2. 2
    Language ports

    Rust, Node.js, Python, C++, PHP under langs/ — same vectors, same encoding rules.

  3. 3
    Official vectors

    Freeze digests for B3 v1. Claim compatibility only after all vectors match.

  4. 4
    Implementing

    Checklist, pitfalls, parallel-lane rules, and the implementers/v1/ pack.

Sandbox (optional)

ForgeHash-X is a separate experimental track. Digests and encoding are not interchangeable with B3.

using ForgeHashX;
using ForgeHashXApi = ForgeHashX.ForgeHashX;

string encoded = ForgeHashXApi.HashPassword(password, ForgeHashXParameters.Toy);
bool ok = ForgeHashXApi.VerifyPassword(password, encoded);

Reference