What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.
SHA3-256 and Keccak-256 are not interchangeable. They use the same Keccak-f[1600] permutation and both return 256-bit digests, but they apply different domain-separation padding. NIST’s SHA3-256 uses the finalized SHA-3 suffix 0x06; Ethereum uses the original Keccak-256 convention, commonly represented with suffix 0x01. That one-byte difference changes every digest. Ethereum’s EVM opcode 0x20 is explicitly KECCAK256, so a standard SHA3-256 library produces the wrong function selectors, storage keys, address calculations and verification hashes. Select an API named keccak256 for Ethereum, and use SHA3-256 only when a standards-compliant SHA-3 result is required.
What is the difference between SHA3-256 and Keccak-256?
The two algorithms share the same underlying Keccak-f[1600] permutation, a 1600-bit transformation used inside a sponge construction. They differ in the domain-separation bits appended during padding before the final permutation. Because the padded message is different, the resulting 256-bit digest is different even when the input bytes are identical.
As an Amazon Associate I earn from qualifying purchases.
Calling both functions “SHA-3” or assuming that the number 256 makes them equivalent is the source of most implementation errors. The 256 denotes output length only. It does not identify the padding rule, protocol domain or complete algorithm.
| Property | SHA3-256 | Keccak-256 used by Ethereum |
|---|---|---|
| Underlying permutation | Keccak-f[1600] | Keccak-f[1600] |
| Output length | 256 bits (32 bytes) | 256 bits (32 bytes) |
| Rate | 1088 bits | 1088 bits for the usual Keccak-256 parameter set |
| Capacity | 512 bits | 512 bits for the usual Keccak-256 parameter set |
| Domain-separation suffix | 0x06, the finalized SHA-3 padding |
Original Keccak convention, commonly 0x01 |
| Primary context | NIST FIPS 202 and standards-compliant applications | Ethereum protocol and EVM hashing |
| Typical API name | SHA3-256 |
keccak256 or Keccak-256 |
The Keccak specification identifies a hash function by its rate, capacity, output length and domain-separation suffix. Matching only the permutation and output size is therefore insufficient.
#1 Best Overall
- Seedless by design, nothing to steal: Your private key is generated inside the EAL6+ chip and never leaves it. No seed phrase is shown or typed at setup, so a tampered device, keylogger, or phishing site has nothing to capture. 9+ years, millions of card.
- Tap once to manage your entire crypto wallet across 90 blockchains - no USB cables or Bluetooth, no batteries, no setup. Access 16,100+ coins & tokens, DeFi, NFTs, and staking instantly from your phone
- Backup without a seed phrase: Your wallet is copied to 2 backup cards with end-to-end encryption, so there are no words on paper to lose or leak. Keep them in separate places; if one card is lost, the others restore full access. Optional seed phrase for advanced users.
- Engineered to last up to 25 years: Waterproof (IP69K), shockproof and tested for extreme temperatures from −25°C to 50°C. A durable cold wallet with long‑term protection and independently audited security.
- Trusted by 6 million users worldwide - buy, sell, swap, stake, and spend cryptocurrency directly. The secure offline storage wallet designed for how people actually use crypto wallets
Why does a one-byte padding change alter the whole hash?
A sponge hash absorbs a padded message into its internal state, applies the permutation repeatedly and then squeezes out the requested digest. The suffix is part of the message absorbed into that state. Changing 0x01 to 0x06 changes the first state transition, and the permutation’s avalanche behavior propagates that difference through all 32 output bytes.
For a message M, the two functions conceptually process different encodings:
Free tools Windows power users keep installed
One-click scans. No signup required.
- Keccak-256:
M || 0x01 || 10*1style multi-rate padding, with the final bit set in the last padding byte. - SHA3-256:
M || 0x06 || 10*1style padding, where the suffix encodes the SHA-3 domain before the final bit.
The exact bit-level representation is defined in the specifications, and implementations normally handle it internally. The practical rule is simple: a SHA3-256 function cannot be made Ethereum-compatible merely by selecting the Keccak-f permutation or requesting a 32-byte result.
Which hash does Ethereum use?
Ethereum uses Keccak-256, not the finalized NIST SHA3-256 function. The EVM opcode at hexadecimal 0x20 is named KECCAK256 and computes the Ethereum hash used by smart contracts and protocol logic.
Ethereum’s documentation explains that the SHA-3 standardization process made a late padding change. Historical Ethereum code and documentation had already adopted the original Keccak convention, so names such as sha3 in older APIs can be misleading. In current code, prefer an explicit keccak256 or Keccak-256 name and treat protocol test vectors as authoritative.
The distinction applies across Ethereum tooling: the EVM instruction, ABI utilities, transaction-related identifiers, contract metadata and application libraries all expect Keccak-256 where the protocol says “keccak.” A library that exposes only a function called sha3_256 should be presumed standards-compliant SHA-3 unless its documentation explicitly states otherwise.
Where does the wrong hash break Ethereum applications?
Any value derived from an Ethereum hash can be wrong if SHA3-256 is substituted for Keccak-256. The input may look correct and the output may have the expected 64 hexadecimal characters, yet every byte can differ.
Function selectors
An ABI function selector is the first four bytes of the Keccak-256 digest of a canonical function signature such as transfer(address,uint256). Using SHA3-256 changes those first four bytes, so a transaction can call the wrong selector or fail to match any function in the contract.
Rank #2
- Effortlessly build your crypto portfolio via the all in one Ledger Wallet app: buy, sell, send, receive, swap, stake and more across popular blockchains. 15,000+ coins & tokens in a single dashboard. Keep a close eye on the market. Compare service providers. Track performance. Get timely alerts. Build your portfolio with confidence.
- Enjoy Bluetooth connectivity, iOS access, and hours of battery use with this mobile-first, secure backup signer. Freedom you can depend on.
- Genuine Check: confirm your signer is authentic during setup with the Ledger Wallet app.
- Protect your signer: keep it in mint condition at all times with a bespoke Pod or Case to avoid scratches and everyday wear and tear.
Event topics
The topic for a non-anonymous Solidity event is derived from the Keccak-256 hash of its canonical event signature. A SHA3-256 result makes log filters miss valid events and can cause indexers to label or decode logs incorrectly.
Storage keys and mapping locations
Solidity uses Keccak-derived values when calculating locations for mappings and other dynamic storage structures. A one-byte padding mismatch points a read or write at a different 32-byte slot, producing an apparently empty value or corrupting unrelated state when low-level tooling is involved.
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Address-related calculations
Ethereum address derivation from a public key uses Keccak-256 and retains the last 20 bytes of the hash of the uncompressed public-key data, with protocol-specific encoding rules. Replacing Keccak-256 produces a different address. Checksum formatting also relies on Keccak-derived case decisions, so a mismatch can make a valid address appear invalid or generate the wrong checksum.
Cross-system verification
Bridges, wallets, signing tools, indexers and off-chain services often compare hashes produced by different languages. If one side uses NIST SHA3-256 and the other expects Ethereum Keccak-256, signatures may verify against different messages, Merkle proofs will not match and serialized identifiers will diverge.
How can I choose the correct implementation?
Choose by protocol requirement rather than by a familiar-looking name. The following procedure prevents most mistakes.
- Identify the specification. If the data participates in Ethereum, the EVM, Solidity ABI encoding or an Ethereum-compatible chain, select Keccak-256. If a standard, compliance document or cryptographic protocol names SHA3-256, select NIST SHA3-256.
- Inspect the API name and documentation. Prefer
keccak256orKeccak-256for Ethereum. Treatsha3_256,SHA3-256and similar names as NIST SHA-3 unless the library explicitly documents the original Keccak padding. - Confirm input bytes. Hashing the text
abc, its UTF-8 bytes, a hexadecimal string containing the charactersathroughf, and the decoded bytes represented by that string are four different operations. - Check output handling. Confirm whether the API returns raw bytes, lowercase hexadecimal, uppercase hexadecimal or a prefixed value such as
0x.... Convert only after hashing. - Run a known vector. Compare the implementation with an Ethereum Keccak-256 vector before using it for selectors, addresses or storage calculations.
- Record the choice. Document the algorithm name, suffix or padding domain, input encoding, output encoding and byte order in the interface specification.
How do the empty-input test vectors prove the difference?
The empty message is a useful smoke test because it removes ambiguity about text encoding. The Ethereum-oriented Keccak-256 digest of zero bytes is:
c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470
This vector is published by the eth-hash project as the Ethereum hashing reference. A standards-compliant SHA3-256 implementation returns a different digest for the same zero-byte input. If your purported Ethereum function returns the SHA3-256 empty-input value instead, it is using the NIST suffix and is not suitable for Ethereum protocol work.
Use at least two checks in production test suites: the empty input and a non-empty byte sequence representative of your application. Also test the exact ABI encoding before hashing. A correct Keccak implementation fed the wrong bytes still produces the wrong protocol result.
Rank #3
- Seedless by design, nothing to steal: Your private key is generated inside the EAL6+ chip and never leaves it. No seed phrase is shown or typed at setup, so a tampered device, keylogger, or phishing site has nothing to capture. 9+ years, millions of cards, no known remote hacks.
- Tap once to manage your entire crypto wallet across 90 blockchains - no USB cables or Bluetooth, no batteries, no setup. Access 16,100+ coins & tokens, DeFi, NFTs, and staking instantly from your phone
- Backup without a seed phrase: Your wallet is copied to 2 backup cards with end-to-end encryption, so there are no words on paper to lose or leak. Keep them in separate places; if one card is lost, the others restore full access. Optional seed phrase for advanced users.
- Engineered to last up to 25 years: Waterproof (IP69K), shockproof and tested for extreme temperatures from −25°C to 50°C. A durable cold wallet with long‑term protection and independently audited security.
- Trusted by 6 million users worldwide (4.9 App Store, 4.8 Google Play) - buy, sell, swap, stake, and spend cryptocurrency directly. The secure offline storage wallet designed for how people actually use crypto wallets
What should code look like in a language with both APIs?
When a platform exposes both functions, make the distinction visible at the call site. The following Python-style example is intentionally explicit:
from hashlib import sha3_256
from eth_hash.auto import keccak
message = b''
standard_sha3 = sha3_256(message).hexdigest()
ethereum_keccak = keccak(message).hex()
print(standard_sha3) # NIST SHA3-256
print(ethereum_keccak) # Ethereum Keccak-256
The package and import names vary by language, but the design principle is portable: keep separate helper functions, name them after the complete algorithm and add tests for the Ethereum vector. Do not create a generic helper called sha3 that silently changes behavior between platforms.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minutePC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11In strongly typed systems, use distinct types or wrapper functions for protocol hashes and general-purpose SHA-3 hashes. This prevents a 32-byte value from one domain being passed where a value from the other domain is required.
What are the exact protocol and security properties?
Both functions produce 256-bit outputs and use a 512-bit capacity in their standard 256-bit configuration. NIST lists SHA3-256 with 128-bit collision resistance and 256-bit preimage resistance. Those figures describe the standardized SHA3-256 construction; they do not make its digest interchangeable with Ethereum’s Keccak-256 digest.
For application security, the domain matters as much as the nominal strength. A protocol that specifies Keccak-256 must use Keccak-256 consistently, even if SHA3-256 offers the same output length and broadly comparable security expectations. Interoperability failure is the immediate risk; an attacker does not need to break the permutation to exploit a mismatch.
How did the naming confusion start?
NIST announced the SHA-3 competition on November 2, 2007, and selected KECCAK on October 2, 2012. FIPS 202, which standardized SHA-3, was published on August 4, 2015. During standardization, NIST finalized domain-separation and padding details that differed from the original Keccak submission.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Fix the driver behind crashes, sound loss and screen glitches3Repair Windows errors before they cause bigger problemsEthereum adopted the original Keccak convention before the finalized standard was widely deployed. As a result, older Ethereum documentation, source code and libraries sometimes used “sha3” as a historical shorthand. That label describes neither the NIST suffix nor the current standards terminology. New documentation should spell out Keccak-256 whenever Ethereum behavior is intended.
What comparison should I make when evaluating a hash library?
Check the complete algorithm definition, not just the marketing label or output size.
Rank #4
- READY IN 3 MINUTES – Set up your ELLIPAL X Card crypto wallet on the offline Starter device, then tap to the ELLIPAL mobile App and start using it. This 100% offline crypto wallet is a no battery crypto wallet with no charging, no firmware updates, and no complicated setup.
- TURN ANY WALLET INTO A CARD – Already have a wallet? Import your recovery phrase from MetaMask, Trust Wallet, Ledger, Trezor, or any compatible seed phrase wallet. X Card works as a backup wallet and physical twin of your existing bitcoin wallet, ethereum wallet, NFT wallet, or altcoin wallet — no transfers, no new accounts, no starting over.
- BUILT ON AN EAL6+ SECURE CHIP – Designed as a secure crypto wallet and private key wallet, X Card generates and stores your private keys inside the EAL6+ secure chip. Your keys never reach your phone, the App, USB, Bluetooth, or the internet, making it a true no bluetooth hardware wallet and no USB crypto wallet.
- ONE APP, EVERYTHING CRYPTO – Manage more with one cold storage wallet. Buy, sell, swap, send, spend, and earn across 45+ blockchains and 10,000+ tokens. Use X Card as your cryptocurrency wallet, coins and tokens wallet, DeFi wallet, and staking wallet for everyday crypto management.
- TAP TO CRYPTO – Carry your crypto cold wallet on a card and secure every transaction with one NFC tap. ELLIPAL X Card combines the simplicity of a crypto wallet with the protection of a cold storage hardware wallet.
| Evaluation question | What to verify |
|---|---|
| Does it identify the domain? | Look for explicit statements of SHA3-256 padding with suffix 0x06 or original Keccak padding commonly represented by 0x01. |
| Does it name the protocol function? | Ethereum integrations should expose keccak256 or Keccak-256, not only a generic sha3 label. |
| Does it publish vectors? | Require an empty-input Keccak-256 test matching the Ethereum vector and tests for non-empty data. |
| What bytes does the API accept? | Confirm whether it accepts raw bytes, text, hexadecimal text or a stream, and how each is encoded. |
| How is output represented? | Confirm byte order, hexadecimal casing and whether a 0x prefix is added. |
| Can the behavior change by version? | Pin the library version and rerun vectors during upgrades, especially when replacing a legacy “sha3” package. |
How do I troubleshoot a hash mismatch?
Work from the bytes outward. Do not begin by changing the hash algorithm at random.
- Print the input as bytes. Compare length and hexadecimal representation on both systems. This catches UTF-8, whitespace, newline and hexadecimal-decoding errors.
- Check the algorithm label. Verify whether each side is SHA3-256 or Keccak-256. A 32-byte output does not prove they match.
- Test the empty input. If the Ethereum side does not produce the known Keccak-256 zero-byte vector, fix the library selection before investigating application logic.
- Inspect concatenation and encoding. ABI values require exact widths, offsets, padding and ordering. Hashing a human-readable signature is not the same as hashing its ABI encoding.
- Compare intermediate values. For a function selector, log the canonical signature string, its UTF-8 bytes, the full 32-byte digest and the four-byte truncation.
- Check prefixes and truncation. Ethereum hexadecimal strings commonly use
0x, while digest libraries may not. Ensure truncation is performed on bytes, not hexadecimal characters counted incorrectly. - Lock the regression test. Keep the input bytes, expected full digest and expected derived value in the test suite so a dependency upgrade cannot silently change behavior.
Is “Ethereum SHA-3” a valid name?
It is understandable as historical shorthand but technically ambiguous. Ethereum’s protocol hash is Keccak-256, while SHA3-256 refers to the NIST-standardized function with different padding. In documentation, code comments and API names, write “Ethereum Keccak-256” to eliminate the ambiguity.
If an older tool says “sha3” yet produces the Ethereum empty-input vector, it is implementing Keccak-256 despite the label. Verify behavior with vectors rather than trusting the name alone.
What should I document for interoperability?
An interoperable specification should identify all details needed to reproduce the bytes:
- Algorithm:
Keccak-256orSHA3-256, never an unexplained “SHA-3.” - Domain-separation and padding convention, including the relevant suffix where useful.
- Input encoding: raw bytes, UTF-8, ABI encoding, RLP or another serialized format.
- Field order, integer width, length prefixes and treatment of leading zero bytes.
- Digest representation: 32 raw bytes, lowercase hexadecimal, uppercase hexadecimal and prefix rules.
- Endianness and truncation rules for derived identifiers, selectors or addresses.
- At least one complete test vector containing input bytes and expected output.
This level of detail prevents a future maintainer from replacing Keccak-256 with a standard-library SHA3-256 call simply because both functions appear under a “SHA-3” module.
Frequently Asked Questions
Can I convert a SHA3-256 digest into a Keccak-256 digest?
No. The digest does not contain enough information to recover the alternate function’s result. You must retain the original input bytes and hash them again with the correct padding convention.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Does Ethereum use Keccak-256 for every hash on every compatible chain?
Ethereum protocol components and the EVM specify Keccak-256, but a particular application or neighboring chain may define an additional hash function. Read that system’s specification instead of assuming that every 32-byte value uses the EVM opcode.
Why do two libraries both advertise “SHA-3” yet disagree?
One may expose the finalized NIST SHA3-256 function while the other preserves the original Keccak function under a historical name. Compare documented padding and the empty-input vector to identify which behavior you have.
Are function selectors case-sensitive?
Yes, because the selector is derived from the exact canonical signature bytes. Changing capitalization, parameter spelling, tuple formatting or data-location syntax before hashing can change the selector even when both implementations use Keccak-256.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

