
T1 · Blockchain · Computed in your browser
Type some text and watch SHA-256 and Keccak-256 fingerprint it side by side, then flip one padding byte to see why Keccak-256 is not SHA3-256.
A hash function turns any input into a fixed-size fingerprint, and a one-bit change in the input flips about half the bits of the output. Bitcoin uses SHA-256, twice; Ethereum uses Keccak-256, which is not the standard SHA3-256.
Bitcoin’s hash, applied twice to headers
ba7816bf8f01cfea414140de5dae2223
b00361a396177a9cb410ff61f20015ad
Edit the text, or flip a switch, to see which bits change.
Ethereum’s hash: delimiter byte 0x01
4e03657aea45a94fc7d47ba826c8d667
c0d1e6e33a64a036ec44f58fa12d6c45
Edit the text, or flip a switch, to see which bits change.
Cells: one per digest bit, lit if the bit is 1. A white ring marks a bit that changed. Nothing on this page is sent anywhere.
Both functions absorb the message into the same 1088-bit rate with the same permutation. Before that, the message gets a delimiter byte and padding. Flip the switch and only that byte changes; the right-hand digest above changes completely.
The final block, in bytes (hex)
The sponge
Both functions: the same permutation and the same sizes (the rate is 136 bytes). Only the padding byte differs. A drawing of the two parts of the state, not of the permutation inside. Drawing
Known answers from the documents in Sources. This page’s code reproduces each one when the site is checked.
A hash function turns any input into a fixed-size fingerprint: 32 bytes for both functions on this page, however long the text. SHA-256 is defined in FIPS 180-4, and NIST publishes worked examples to check an implementation against. For the three letters abc it gives BA7816BF…F20015AD. The default text above is abc, so the left-hand grid shows that digest, and the check that runs on this site has to reproduce it.
Change one character and compare the grids: about half the bits of each digest flip. That is what a good hash function does, and the counter here is measured on the text you type, not quoted from a source. Run the letters a to z through and the count hovers near 128 of 256, but nothing on this page proves it for every input.
Bitcoin hashes a block header with SHA-256 twice, so the double SHA-256 switch shows SHA-256 of the SHA-256 of your text. The next tutorial does that to a real header.
Ethereum hashes with Keccak-256, which is not the standard SHA3-256. The yellow paper says Ethereum uses the Keccak competition entry rather than the final SHA-3 specification. Both functions run the same permutation at the same rate (1088 bits) and capacity (512 bits). They differ in one byte: the delimiter added to the message before it is padded. FIPS 202 appends the two bits 01 first, which makes the byte 0x06. The original Keccak submission, whose known answers the Keccak team published, is what you get with 0x01 instead, and this site’s check reproduces those answers. Flip the switch and the digest of the empty message changes from C5D24601…5D85A470 to A7FFC6F8…80F8434A.
Everything above runs in this page’s own code in your browser. What you type is never sent anywhere, and the page records only that a control was used, never your text or anything computed from it. The sponge drawing is a picture of the padded message, not of the permutation’s internal state.
Get three different answers and match two to published ones.
FIPS 180-4 Secure Hash Standard (NIST). Aug 2015.
Read 2026-10-23: Contents and section 6.2 (SHA-256) headings; the abstract. The constants’ definition (sections 4.2.2 and 5.3.3) is followed in sha256.ts but was not re-read
NIST SHA-256 example SHA-256 example with intermediate values (NIST CSRC). undated.
Read 2026-10-23: the one-block “abc” example and its digest, BA7816BF…F20015AD, and the two-block message with its digest, 248D6A61…19DB06C1
Bitcoin developer reference: block chain Block Chain (developer reference), bitcoin.org developer documentation. undated; contains “as of November 2017”. Structure only, never current figures.
Read 2026-10-23: Header fields and sizes, internal byte order against display order, little-endian integers, double SHA-256 for headers, Merkle construction, the coinbase transaction (the first transaction in a block), nBits and its examples
Ethereum yellow paper Ethereum: A Secure Decentralised Generalised Transaction Ledger (Gavin Wood). Shanghai version efc5f9a, 2025-02-04. Its section 4.4 lists 17 header fields; the blob, beacon-root and requests-hash fields are not in it.
Read 2026-10-23: Section 3 (KEC is Keccak-256, not the final SHA-3), 4.4 (17 header fields, through baseFeePerGas and withdrawalsRoot), 4.4.1 (receipts and logs), Appendix B (RLP, titles)
FIPS 202 SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions (NIST). Aug 2015. NIST decided on 2025-03-13 to update it.
Read 2026-10-23: Abstract; section 5.2 (KECCAK[c]); section 6.1 (SHA3-256 is KECCAK[512] applied to the message followed by the bits 01)
Keccak specifications summary Keccak specifications summary (the Keccak team). undated.
Read 2026-10-23: Padding with a delimited suffix; Table 3 gives SHA3-256 the suffix 0x06. It does not itself describe the original submission’s 0x01
Keccak known-answer files KeccakKAT-3.zip, KeccakKAT/ShortMsgKAT_256.txt (the Keccak team, obsolete files, version 3). undated.
Read 2026-10-23: the file’s Len, Msg and MD triples for Keccak with rate 1088 and 256-bit output, including the empty message, C5D24601…5D85A470
NIST SHA3-256 example SHA3-256 example, empty message (NIST CSRC). undated.
Read 2026-10-23: the final digest for the empty message, A7FFC6F8…80F8434A
Everything here is paraphrased from the sources, not quoted at length, and every claim is attributed to one. Each entry says which parts of the source were read, and whether the build or the plan read them. Anything illustrative is labelled as such. Where a source is silent or could not be read, the page leaves the fact out.