EXHIBIT 04● REAL SHA-256 · window.crypto.subtle
Hash Commitment Scheme
A way to lock in a hidden choice now and prove later that you did not change it
✓ Binding
✓ Hiding
This is like sealing your answer in an envelope before anyone is allowed to open it. You commit first, which locks in your choice, and then you reveal it later so everyone can check that you did not swap it out.
Here the digital envelope is a real SHA-256 hash. Once the bid and secret nonce are revealed, anyone can recompute the hash and confirm that the original commitment was honest and unchanged.
Toy vs Production Parameters
| Dimension | This Exhibit | Production Expectation |
|---|---|---|
| Commitment primitive | SHA-256 digest (real) | Hash + protocol-specific domain separation |
| Nonce source | 32-byte browser RNG | Strict entropy controls + protocol audits |
| Application model | Two bidder educational flow | Authenticated multi-party protocol with dispute handling |
| Security envelope | Inspectable demo UI | Formal protocol proofs + hardened backend integration |
BIDDER A
Secret bid
—
Random nonce (32 bytes)
—
SHA-256(bid ‖ nonce)
—
BIDDER B
Secret bid
—
Random nonce (32 bytes)
—
SHA-256(bid ‖ nonce)
—
Commitments lock bids before revelation — neither bidder can see or change the other's bid once committed.
Real SHA-256 runs in your browser via window.crypto.subtle.digest(). Binding: changing even one character produces a completely different 256-bit hash. Hiding: the hash reveals nothing about the bid value.