Trust Surface ยท Hash Enumerability

A digest is only as private as its input is unguessable

Hashing a low-entropy identifier hides its bytes, not its value. Pick a synthetic identifier from a toy corpus, watch a dictionary attack recover it from its bare SHA-256 digest, then watch the same attack fail against the same identifier under a fresh salted commitment. Everything runs in your browser over toy corpora.

๐Ÿ”’ All inputs are processed locally in your browser. No data is transmitted. Do not enter real personal data โ€” use synthetic or anonymised inputs only.
Panel 1 ยท The identifier and its bare digest

Choose a low-entropy identifier

Every value in these corpora is publicly guessable: month names, ISO country short names, and one synthetic plate format. That is the point. Pick any one of them.

Bare SHA-256 (no salt)โ€ฆ
Panel 2 ยท Dictionary attack on the bare digest

A dictionary attack over the same corpus

An attacker who can guess the input space does not need to invert SHA-256. This attack hashes every candidate in the selected corpus and compares against the bare digest above.

Idle.
Panel 3 ยท The same identifier under a salted commitment

How a fresh salt protects the same input

This panel commits to the same identifier in the estate's sha256-salted@1 shape: a fresh 256-bit salt from crypto.getRandomValues, generated in your browser for this run and withheld from the attack panel. The salt is hash-excluded: the scheme hashes salt and input together and nothing else, and the salt bytes themselves are never hashed.

No commitment yet.
Where this protection stops: it holds because the salt stays with the committer. A salt published next to the digest defeats precomputed tables, not targeted enumeration, and a reused salt lets attackers compare commitments to each other. Freshness per value is what makes enumeration infeasible here.
The lesson

Enumerability is the test

The presence of a digest proves nothing about privacy. Ask whether the input space is enumerable: if a corpus of plausible values can be hashed and compared, a bare digest over that corpus is recoverable. Commitments that survive enumeration add fresh, committer-held randomness before the hash. This page is a teaching model over toy corpora and is not an eKYC compliance tool; for selective-disclosure machinery see the workbench links below.