Generador de Hash Keccak-256 desde Texto Online (Ethereum / EVM)
Calcula hashes Keccak-256 exactos para Ethereum, contratos inteligentes de Solidity y la EVM (Ethereum Virtual Machine). Genera automáticamente el selector de función de 4 bytes (Method ID), firmas de eventos ERC-20, claves de almacenamiento para mappings y resúmenes Web3 con prefijo 0x en tiempo real.
¿Qué es Keccak-256 y por qué es el Pilar Fundamental de Ethereum y la EVM?
Keccak-256 es la función hash criptográfica universal sobre la que descansa toda la arquitectura de seguridad, direccionamiento y ejecución de la red Ethereum y de cualquier cadena de bloques compatible con la EVM (Ethereum Virtual Machine). Diseñada por el equipo de Guido Bertoni, Joan Daemen, Michaël Peeters y Gilles Van Assche, Keccak fue adoptada por Ethereum en 2014 —antes de la estandarización final de SHA-3 por el NIST— y se ha mantenido inalterada como el estándar de facto indiscutible del ecosistema Web3.
En el desarrollo con el lenguaje Solidity, Keccak-256 es la primitiva criptográfica nativa más invocada a través de la función global keccak256(bytes memory). Cada interacción en la blockchain —desde la transferencia de tokens ERC-20 y NFTs ERC-721, pasando por la validación de firmas criptográficas ECDSA (EIP-712), hasta la resolución de nombres descentralizados en ENS (Ethereum Name Service)— depende directamente de la solidez matemática de Keccak-256.
Aplicaciones Prácticas de Keccak-256 en el Ecosistema Ethereum
Keccak-256 interviene en los componentes más críticos de la máquina virtual de Ethereum:
- Derivación de Direcciones de Billetera (Ethereum Addresses): Las direcciones públicas de Ethereum (como
0x71C...) no son la clave pública en sí, sino los últimos 20 bytes (160 bits) del hash Keccak-256 de la clave pública elíptica secp256k1 no comprimida de 64 bytes: $$\text{Ethereum Address} = \text{Últimos 20 bytes}(\text{Keccak-256}(\text{Public Key}))$$ - Selectores de Funciones de Contratos (Method IDs de 4 Bytes): Cuando una billetera o dApp envía una transacción para ejecutar una función de un contrato inteligente, los primeros 4 bytes de los datos de la transacción (calldata) corresponden a los primeros 4 bytes del hash Keccak-256 de la firma canónica de la función sin espacios: $$\text{Method ID} = \text{Keccak-256}(\text{"transfer(address,uint256)"})[0 \dots 3] = \mathtt{0xa9059cbb}$$ Nuestra herramienta calcula y resalta automáticamente este selector de 4 bytes para que puedas inspeccionar transacciones en Etherscan o depurar llamadas en Foundry y Hardhat.
- Firmas de Eventos y Tópicos (Log Topics): Cuando un contrato emite un evento, el primer tema indexado (
Topic 0) en el recibo de la transacción es exactamente el hash Keccak-256 de la firma del evento: $$\text{Topic 0} = \text{Keccak-256}(\text{"Transfer(address,address,uint256)"})$$ - Cálculo de Ranuras de Almacenamiento (Storage Slots para Mappings): Para acceder a los datos de una clave en un mapping de Solidity (por ejemplo,
mapping(address => uint256) balancesen el slot $p$), la EVM localiza el valor calculando el hash concatenado de la clave y el número de slot: $$\text{Slot Index} = \text{Keccak-256}(\text{key} \parallel \text{slot } p)$$
Vectores de Prueba Oficiales de Keccak-256 para Solidity y Web3
A continuación se detallan los vectores de verificación canónicos utilizados universalmente en pruebas unitarias de Solidity y librerías como ethers.js, viem y web3.py:
| Texto / Firma de Función | Selector EVM (4 bytes) | Hash Completo Keccak-256 (32 bytes) |
|---|---|---|
"" (cadena vacía) | 0xc5d24601 | 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 |
"transfer(address,uint256)" | 0xa9059cbb | 0xa9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b |
"balanceOf(address)" | 0x70a08231 | 0x70a08231b83d1f284bd610f0d22d8b02e16c783e2e0d99584b473297472b7258 |
"approve(address,uint256)" | 0x095ea7b3 | 0x095ea7b30a708146b30d669ccd6ec7045c6808b7fdd63813736dd2ba88fb9483 |
¿Por qué SHA3-256 del NIST produce un resultado diferente al de Solidity?
Un error extremadamente frecuente entre desarrolladores de blockchain es utilizar librerías o herramientas etiquetadas genéricamente como "SHA-3" para calcular hashes de Ethereum, descubriendo que el valor no coincide con el obtenido en Solidity o Etherscan.
Esto ocurre porque el NIST FIPS 202 SHA3-256 utiliza el byte de relleno 0x06 (añadiendo dos bits de dominio 01), mientras que Keccak-256 de Ethereum utiliza el byte de relleno 0x01 original. Nuestro convertidor implementa de manera estricta y nativa la variante Keccak-256 (Ethereum EVM), garantizando una compatibilidad del 100% con Solidity y herramientas Web3. Si necesitas la variante oficial del gobierno estadounidense, utiliza nuestro Generador SHA3-256.
Preguntas Frecuentes sobre el Generador de Hash Keccak-256 (FAQ)
¿Cómo se calcula un selector de función de Solidity con esta herramienta?
Simplemente introduce la firma canónica de la función en el área de texto, respetando los nombres exactos de los tipos sin espacios (por ejemplo: transferFrom(address,address,uint256)). La herramienta calculará inmediatamente el hash completo y extraerá los primeros 4 bytes con el prefijo 0x en la casilla superior de "EVM Selector", listos para copiar con un solo clic.
¿Esta herramienta soporta empaquetado como abi.encodePacked()?
Nuestra calculadora procesa cadenas de texto plano codificadas en UTF-8, lo que equivale exactamente al comportamiento de keccak256(bytes("mi texto")) o keccak256(abi.encodePacked("mi texto")) en Solidity para cadenas alfanuméricas. Si concatenas varios textos sin delimitadores, el resultado en la herramienta coincidirá punto por punto con la salida del contrato inteligente.
¿Se envían las firmas o textos a algún servidor?
No. El algoritmo Keccak-256 está programado íntegramente en JavaScript del lado del cliente utilizando enteros BigInt de 64 bits para una velocidad máxima. Ninguna consulta ni dato introducido se almacena ni se transmite por internet.