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.
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.
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.
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.
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.