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).
| Registry | B3 | X |
|---|---|---|
| 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
Suggested path
-
1
.NET usage
HashPassword / VerifyPassword / NeedsRehash, Development vs Interactive profiles.
-
2
Language ports
Rust, Node.js, Python, C++, PHP under
langs/— same vectors, same encoding rules. -
3
Official vectors
Freeze digests for B3 v1. Claim compatibility only after all vectors match.
-
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);