Reference
Specification
Readable map of ForgeHash-B3. Normative text: SPECIFICATION.md. Paths: developers · researchers.
Final warning (spec §39). ForgeHash is educational and research software. It must not be used to protect production passwords without extensive independent review.
Identity
Base64 is RFC 4648 without padding. Parameter order is always m,t,p. See spec §5–§6.
What the construction does
ForgeHash-B3 is a configurable, memory-hard password hashing construction. Design goals (§2) include unique salting, independently configurable memory / iterations / lanes, salt-dependent addressing, complete-state finalization, versioned encoding, defensive parsing, and constant-time verification.
Non-goals (§3) include formal security claims, Argon2 compatibility, automatic Unicode normalization, and replacing BLAKE3 itself. The experimental ForgeHash-X sandbox (custom ForgeX sponge, $forgehx$v=0$) is specified separately in SPECIFICATION_X.md and is not part of B3 v1 conformance.
Algorithm spine (high level)
- Seed — BLAKE3 derive-key with domain
ForgeHash/v1/seed(§10) - Expand / init — fill initial blocks via XOF expand (§12–§13)
- Fill — per-lane memory fill with ForgeMix compression and reference selection (§14–§16)
- Finalize — lane samples, 64-block groups, group root, root, output XOF (§17)
- Encode — canonical
$forgeh$string (§6)
Default profiles (§33)
| Profile | Memory | Iterations | Parallelism |
|---|---|---|---|
| Development | 8192 KiB | 1 | 1 |
| Interactive | 65536 KiB | 3 | 1 |
| Sensitive | 262144 KiB | 4 | 2 |
Table of contents
Section numbers match SPECIFICATION.md. Use the full file for normative detail.
- Foundations
- §1 Project overview
- §2 Design goals
- §3 Non-goals
- §4 Terminology
- Encoding & parameters
- §5 Algorithm identifier
- §6 Encoded hash format
- §7 Parameter requirements
- §8 Input handling
- §9 Binary input encoding
- Core algorithm
- §10 Initial seed generation
- §11 Memory layout
- §12 Expand function
- §13 Memory initialization
- §14 ForgeMix compression function
- §15 Reference block selection
- §16 Memory filling
- §17 Finalization
- §18 Optional pepper support
- API & safety
- §19 Public API
- §20 Verification procedure
- §21 NeedsRehash behavior
- §22 Parser safety
- §23 Memory handling
- §24 Threading model
- §25 Error handling
- Project & tooling
- §26 Project structure
- §27 CLI application
- §28 Test vectors
- §29 Required tests
- §30 Benchmarking
- §31 Visualizer
- §32 Security analysis plan
- Process
- §33 Recommended default profiles
- §34 Versioning rules
- §35 Documentation requirements
- §36 Security disclosure policy
- §37 Implementation milestones
- §38 Acceptance criteria
- §39 Final warning