ForgeHash 1.0.0-experimental

This is a prerelease version of ForgeHash.
dotnet add package ForgeHash --version 1.0.0-experimental
                    
NuGet\Install-Package ForgeHash -Version 1.0.0-experimental
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ForgeHash" Version="1.0.0-experimental" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ForgeHash" Version="1.0.0-experimental" />
                    
Directory.Packages.props
<PackageReference Include="ForgeHash" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add ForgeHash --version 1.0.0-experimental
                    
#r "nuget: ForgeHash, 1.0.0-experimental"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package ForgeHash@1.0.0-experimental
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=ForgeHash&version=1.0.0-experimental&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=ForgeHash&version=1.0.0-experimental&prerelease
                    
Install as a Cake Tool

ForgeHash

Experimental cryptographic software. Do not use it to store production passwords.

Prefer Argon2id, scrypt, bcrypt, or your platform’s password APIs until ForgeHash has had serious independent review.

What this is

ForgeHash-B3 is a configurable, memory-hard password hashing construction for research, benchmarking, and cross-language ports. The first variant uses BLAKE3.

Algorithm ForgeHash-B3
Encoded id forgeh
Version v=1
.NET packages ForgeHash 1.0.0-experimental · ForgeHashX 0.1.0-experimental · tool ForgeHash.Cli

| Spec | SPECIFICATION.md | | Docs site | https://thomasbehappy.github.io/Forgehash/ |

Encoded form (unpadded RFC 4648 Base64; parameter order always m,t,p):

$forgeh$v=1$m=<memoryKiB>,t=<iterations>,p=<parallelism>$<salt-b64>$<hash-b64>

ForgeHash-X (experimental)

Separate research sandbox with a custom ForgeX sponge (no BLAKE3). Encoded as $forgehx$v=0$…. Not production-ready, not reviewed, not compatible with B3. Spec and .NET reference: docs/forgehx/. Toy vectors + KATs: implementers/x0/. Sample: samples/ForgeHash.X.Sample/. CI: .github/workflows/forgehx.yml. Empirical notes: docs/forgehx/RESEARCH_NOTES.md. Full research paper (PDF): docs/forgehx/paper/ForgeHash_X_Research_Paper.pdf. Site: X Vectors.

Who should read what

Audience Start here
App developers (.NET) docs/USAGE.md
Language porters docs/IMPLEMENTING.md + implementers/v1/
Researchers docs/RESEARCH_REPORT.md
Cryptographers reviewing the design SPECIFICATION.md
Security reports SECURITY.md

Documentation site

Static HTML under website/, published by GitHub Actions (Pages Source must be GitHub Actions, not the /docs folder).

npx --yes serve website

Repository layout

SPECIFICATION.md          Normative B3 algorithm
docs/                     Usage, porting, research
docs/forgehx/             ForgeHash-X sandbox spec + README
implementers/v1/          Official B3 vectors + checklist
implementers/x0/          ForgeHash-X toy vectors + ForgeX KATs
samples/ForgeHash.X.Sample/  ForgeHash-X usage demo
src/ForgeHash.Core        .NET B3 reference library
src/ForgeHash.X.Core      .NET X sandbox (ForgeX sponge)
src/ForgeHash.Analysis    Traces, TMTO heuristic, collision engine
src/ForgeHash.CollisionLab  Windows GUI for mass uniqueness hunts
src/ForgeHash.Visualizer  Export analysis artifacts
src/ForgeHash.Cli         hash / verify / benchmark / vector
langs/                    B3 (`forgeh`) + X (`forgehx`) ports
tests/                    xUnit suites + frozen vectors
website/                  GitHub Pages site

.NET

dotnet add package ForgeHash --prerelease
dotnet add package ForgeHashX --prerelease   # optional X sandbox
dotnet tool install -g ForgeHash.Cli --prerelease

# Or pack from source → artifacts/nuget
dotnet pack src/ForgeHash.Core/ForgeHash.Core.csproj -c Release -o artifacts/nuget
dotnet pack src/ForgeHash.X.Core/ForgeHash.X.Core.csproj -c Release -o artifacts/nuget
dotnet pack src/ForgeHash.Cli/ForgeHash.Cli.csproj -c Release -o artifacts/nuget
using ForgeHash;
using ForgeHashApi = ForgeHash.ForgeHash; // class name matches the namespace

string encoded = ForgeHashApi.HashPassword(password, ForgeHashParameters.Interactive);
bool ok = ForgeHashApi.VerifyPassword(password, encoded);
forgeh hash --algo b3 --password-stdin
dotnet run --project samples/ForgeHash.Sample -- "demo-password"

Publish notes: docs/PUBLISHING.md.

Other languages

Language Path Notes
Rust langs/rust/forgeh Native + C ABI; all 4 vectors pass
Node.js langs/nodejs/forgeh Native JS; all 4 vectors pass
Python langs/python/forgeh Native Python; all 4 vectors pass
C++ langs/cpp/forgeh C++20 over Rust C ABI
PHP langs/php/forgeh FFI over Rust (ext-ffi)
cargo test --manifest-path langs/rust/forgeh/Cargo.toml --release
cd langs/nodejs/forgeh && npm install && npm test
cd langs/python/forgeh && python -m pip install -e ".[dev]" && pytest -q

Claim ForgeHash-B3 v1 compatible only when every official vector matches bit-exactly.

Build / test

dotnet build ForgeHash.sln -c Release
dotnet test ForgeHash.sln -c Release

Cost profiles

Profile Memory Iterations Parallelism
Development 8192 KiB 1 1
Interactive 65536 KiB 3 1
Sensitive 262144 KiB 4 2

Development is for tests and mass campaigns only.

Research tooling

Report: docs/RESEARCH_REPORT.md (includes a logged run of 100 000 random pairs with 0 collisions at Development cost).

# Mass uniqueness / collision lab (Windows) — B3 or X via Algorithm combo
dotnet run --project src/ForgeHash.CollisionLab -c Release

# Reference graphs / TMTO heuristic export
dotnet run --project src/ForgeHash.Visualizer -c Release -- all --out artifacts/analysis --memory 8192 --parallelism 2

# BenchmarkDotNet
dotnet run --project src/ForgeHash.Benchmarks -c Release
# CLI
dotnet run --project src/ForgeHash.Cli -- hash --memory 8192 --iterations 1 --parallelism 1
dotnet run --project src/ForgeHash.Cli -- verify "$forgeh$..."

Security / license

Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0-experimental 60 7/20/2026