Generador de Hash Keccak-256
Calcula hashes Keccak para Ethereum, además de selectores de función y topics de eventos. Todo se procesa en tu navegador.
Ethereum Use Cases
Function selector = first 4 bytes of Keccak-256 of the function signature. Event topic = full 32-byte Keccak-256.
Ethereum Applications of Keccak-256
Qué hace esta herramienta
Escribe o pega una entrada y obtienes el hash al instante, sin pulsar nada. El algoritmo Keccak está implementado en la propia página, así que no hay ninguna petición al servidor.
- Cuatro variantes — Keccak-256, 512, 224 y 384, calculadas a la vez.
- Tres codificaciones de entrada — UTF-8, hexadecimal o Base64, según cómo tengas el dato.
- Comparación con SHA-256 — se muestra al lado para que veas que no coinciden.
- Selector y topic — a partir de una firma de función obtienes el selector de 4 bytes y el topic de evento de 32 bytes.
- Archivos — puedes cargar un archivo y calcular su hash sin subirlo a ningún sitio.
Keccak-256 no es SHA3-256
Es la trampa que hace perder más horas en Ethereum. Ambos usan la construcción esponja de Keccak, pero el NIST cambió el byte de relleno al estandarizar SHA-3: 0x01 en el Keccak original, 0x06 en SHA-3. Ethereum ya había adoptado el primero.
Consecuencia práctica: si calculas un hash con una librería que expone sha3_256 y lo comparas con lo que devuelve keccak256() en Solidity, no van a coincidir nunca. En Python, hashlib.sha3_256 no sirve; necesitas eth_hash o pysha3.keccak_256.
Selector de función y topic de evento
El selector son los primeros 4 bytes del Keccak-256 de la firma canónica. El topic de un evento son los 32 bytes completos:
transfer(address,uint256) -> 0xa9059cbb approve(address,uint256) -> 0x095ea7b3 balanceOf(address) -> 0x70a08231 Transfer(address,address,uint256) -> 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
Cuidado con la firma canónica: sin espacios, sin nombres de parámetros y con el tamaño explícito. uint se escribe uint256; si lo omites, el selector sale distinto y la llamada revierte.
Dónde aparece Keccak-256 en Ethereum
- Direcciones — los últimos 20 bytes del Keccak-256 de la clave pública.
- Slots de storage — la posición de una entrada de
mappingse calcula hasheando la clave junto al número de slot. - Logs — el primer topic de un evento no anónimo es el hash de su firma.
- EIP-712 — el hash del dominio y de la estructura, para firmas de datos legibles.
- CREATE2 — la dirección resultante depende del Keccak-256 del bytecode de inicialización.
Preguntas frecuentes
¿Keccak-256 es lo mismo que SHA3-256?
No, y confundirlos es el error más común. Ethereum adoptó Keccak antes de que el NIST cerrara el estándar SHA-3, y el NIST cambió el relleno de 0x01 a 0x06. El resultado: para la misma entrada, keccak256() de Solidity y SHA3-256 devuelven hashes distintos. Esta herramienta implementa el Keccak original que usa Ethereum.
¿Qué es el selector de función?
Los primeros 4 bytes del hash Keccak-256 de la firma canónica de la función. La EVM los lee al principio del calldata para saber qué función invocar. Escribe la firma y aquí verás el selector.
¿Cómo escribo la firma canónica?
Sin espacios, sin nombres de parámetros y con los tipos completos: transfer(address,uint256), no transfer(address to, uint256 amount). uint es uint256 en la forma canónica, así que escribe siempre el tamaño.
¿Se envían mis datos a algún servidor?
No. El Keccak está implementado en JavaScript y se ejecuta en la página, así que puedes usarlo con datos de producción sin que salgan de tu equipo.