Calculadora de hash Keccak-256

Hashea texto o bytes en bruto con Keccak-256 tal como lo usa Ethereum, y compáralo con SHA3-256 y SHA-256. El resultado se actualiza mientras escribes; los primeros cuatro bytes son el selector de función de Solidity.

Se calcula en tu navegador con JavaScript. Las direcciones nunca se suben ni se almacenan.

¿Qué es Keccak-256?

Keccak-256 es la función hash de esponja de 256 bits que Ethereum usa en todas partes: una dirección son los últimos 20 bytes del Keccak-256 de la clave pública, un selector de función son los primeros 4 bytes del Keccak-256 de la firma canónica, y los topics de eventos, las sumas de verificación EIP-55 y los slots de almacenamiento derivan de él. Es la propuesta original de Keccak, que difiere del SHA3-256 finalizado por el NIST solo en el byte de relleno (padding), por lo que ambas producen digests distintos para la misma entrada.

Usos habituales

Vectores de prueba

EntradaKeccak-256
(vacío)0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470
abc0x4e03657aea45a94fc7d47ba826c8d667c0d1e6e33a64a036ec44f58fa12d6c45
Transfer(address,address,uint256)0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Pega cualquiera de estos valores para confirmar la implementación antes de confiar en ella.

Keccak-256 vs. SHA3-256 vs. SHA-256

FunciónFamiliaRelleno / construcciónUsado por
Keccak-256Esponja Keccak, tasa de 1088 bitspad10*1 con byte de dominio 0x01Ethereum, Tron (TVM), todas las cadenas EVM
SHA3-256Esponja Keccak, tasa de 1088 bitspad10*1 con byte de dominio 0x06 (FIPS 202)Aplicaciones NIST, algunas cadenas no EVM
SHA-256Merkle–Damgård (SHA-2)relleno de longitud, bloques de 512 bitsBitcoin, txID de Tron, TLS, Base58Check

Ejemplo práctico: el SHA3-256 de abc en una biblioteca FIPS 202 devuelve 0x3a985da74fe225b2045c172d6bd390bd855f086e3e9d525b46bfe24511431532, mientras que el Keccak-256 de los mismos tres bytes es el valor 0x4e03657a… de la tabla anterior. Si el valor de un contrato o de un explorador no coincide con el de tu biblioteca, el byte de relleno es lo primero que debes revisar.

Preguntas frecuentes

¿Keccak-256 es lo mismo que SHA3-256?

No. Ethereum adoptó Keccak antes de que el NIST finalizara SHA-3, y el estándar final cambió el byte de relleno (0x01 para Keccak, 0x06 para SHA3). Ambas producen salidas distintas para la misma entrada, y por eso las bibliotecas web3 llaman a la función keccak256 en lugar de sha3. Esta página muestra ambas para que veas la diferencia.

¿Para qué usa Ethereum Keccak-256?

Para derivar direcciones a partir de claves públicas (últimos 20 bytes del hash), selectores de función y topics de eventos (hash de la firma), sumas de verificación EIP-55, cálculo de slots de almacenamiento para mappings, nodos del trie Merkle-Patricia y los hashes de bloques y transacciones.

¿Debo hacer el hash de texto o de hex?

Elige texto UTF-8 para firmas y cadenas normales. Elige hex cuando tengas bytes en bruto, por ejemplo una clave pública sin comprimir o datos codificados en ABI; el prefijo 0x es opcional. Hacer el hash del texto "0xabcd" y el de los bytes 0xabcd da resultados distintos.

¿El hash se calcula en su servidor?

No. Keccak, SHA3 y SHA-256 están implementados en JavaScript en esta página y se ejecutan en tu navegador. La página no hace ninguna petición de red después de cargarse.

¿Cuál es el Keccak-256 de una cadena vacía?

0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470. Aparece constantemente en Ethereum: es el hash de código de toda cuenta que no tiene código, y por eso los exploradores lo muestran para las carteras normales.

¿Puedo verificar un valor de Bitcoin aquí?

SHA-256 está incluido, así que puedes aplicar un hash simple a los datos. El doble SHA-256 y RIPEMD-160 de Bitcoin no se exponen como salidas separadas, pero el validador de direcciones Bitcoin los ejecuta internamente al comprobar direcciones.