Generador de Hash SHA3-256 desde Texto Online
Calcula resúmenes criptográficos SHA3-256 (256 bits / 64 caracteres hexadecimales) bajo el estándar oficial NIST FIPS 202. Basado en la construcción esponja Keccak-f[1600] con sufijo de separación de dominio 0x06, tasa r = 1088 bits y capacidad c = 512 bits. Soporta codificación UTF-8, salidas Hexadecimal, Base64, Binario y HMAC-SHA3-256.
¿Qué es SHA3-256 y por qué Revolucionó la Seguridad de los Estándares Federales?
SHA3-256 es la variante de 256 bits del estándar federal estadounidense de procesamiento de información FIPS 202, publicado oficialmente por el Instituto Nacional de Estándares y Tecnología (NIST) en agosto de 2015. SHA-3 nació a raíz de una histórica competición criptográfica internacional convocada en 2007, tras la caída y colisión práctica de MD5 y la detección de severas grietas teóricas en SHA-1 por parte del equipo de la investigadora china Xiaoyun Wang.
El algoritmo ganador de la competición —elegido por el NIST en octubre de 2012 entre las 64 propuestas presentadas de todo el mundo, de las que solo 5 llegaron a la final— fue Keccak, obra del equipo de investigadores europeos integrado por Guido Bertoni, Joan Daemen (también coautor de AES junto a Vincent Rijmen), Michaël Peeters y Gilles Van Assche. La victoria de Keccak radicó en su ruptura absoluta con el pasado: mientras que todas las normas anteriores del NIST (SHA-0, SHA-1, SHA-224, SHA-256, SHA-384 y SHA-512) pertenecían a la misma familia arquitectónica Merkle–Damgård, SHA-3 introdujo un paradigma matemático enteramente nuevo: la construcción esponja criptográfica.
La Construcción Esponja: Fase de Absorción y Fase de Exprimido
A diferencia de las funciones hash tradicionales basadas en compresión iterativa de bloques de tamaño fijo, la construcción esponja opera sobre un estado global amplio de $b = 1600$ bits divididos conceptualmente en dos componentes:
El ciclo de vida de la esponja se divide en dos fases bien diferenciadas:
- Fase de Absorción (Absorbing Phase): El mensaje de entrada $M$ se fragmenta en bloques uniformes de $r = 1088$ bits. Cada bloque se aplica mediante una operación XOR directamente sobre los primeros $r$ bits del estado interno. A continuación, el estado completo de 1600 bits se somete a la permutación iterativa no lineal Keccak-$f[1600]$ (compuesta por 24 rondas de mezcla profunda). Este proceso se repite hasta que todos los bloques del mensaje han sido completamente "absorbidos".
- Fase de Exprimido (Squeezing Phase): Una vez absorbido todo el mensaje, los primeros $r$ bits del estado se extraen ("exprimen") como flujo de salida. Para SHA3-256, se extraen exactamente los primeros 256 bits (32 bytes) del estado de una sola vez, obteniendo el resumen criptográfico final.
La capacidad $c = 512$ bits permanece siempre oculta y nunca interactúa directamente con la entrada ni con la salida. Esto hace que SHA3-256 sea inmune por diseño a los ataques de extensión de longitud que afectan a SHA-256 y, según FIPS 202, ofrece una resistencia a preimágenes de 256 bits ($c/2 = 256$) y una resistencia a colisiones de 128 bits: la mitad de la longitud de salida, el máximo posible para cualquier hash de 256 bits.
Distinción Crítica: ¿En qué se Diferencia SHA3-256 de Keccak-256?
Existe una extendida confusión en el sector tecnológico entre SHA3-256 y Keccak-256, originada por el calendario de adopción de la red Ethereum. Cuando el equipo fundador de Ethereum diseñó la EVM y el lenguaje Solidity (propuesto por Gavin Wood en 2014), adoptó la versión original de Keccak tal como se había presentado a la competición del NIST, antes de que el estándar quedara finalizado.
Sin embargo, al redactar la norma oficial definitiva FIPS 202 en 2015, el NIST añadió un mecanismo de separación de dominios que añade dos bits de sufijo (01) a todos los mensajes antes del relleno multirate $10^*1$. En representación en bytes little-endian, esto modifica el primer byte de relleno:
| Parámetro Criptográfico | SHA3-256 (NIST FIPS 202 Oficial) | Keccak-256 (Estándar Ethereum / EVM) |
|---|---|---|
| Sufijo de Dominio | Bits 01 (Byte de relleno: 0x06) | Bits vacíos (Byte de relleno: 0x01) |
| Tasa ($r$) / Capacidad ($c$) | $r = 1088$ bits, $c = 512$ bits | $r = 1088$ bits, $c = 512$ bits |
Hash de Cadena Vacía "" | a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a | c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 |
| Ámbito de Uso Principal | Estándares federales de EE. UU. (NIST/FIPS), criptografía post-cuántica del NIST (ML-KEM y ML-DSA usan la familia SHA-3/SHAKE) y sistemas que buscan una alternativa a SHA-2 | Smart Contracts Solidity, Ethereum EVM, selectores de funciones, Web3 |
Si estás trabajando con desarrollo de contratos inteligentes en Ethereum, debes utilizar nuestro Generador Keccak256 específico para EVM.
Las 5 Transformaciones de la Permutación Keccak-f[1600]
El núcleo de SHA3-256 somete al estado tridimensional de 25 palabras de 64 bits ($5 \times 5 \times 64$) a 24 rondas idénticas compuestas por cinco operaciones geométricas modulares:
- $\theta$ (Theta): Difusión de paridad lineal en columnas. Calcula la paridad de cada columna de 5 bits e inyecta el resultado mediante XOR en dos columnas adyacentes.
- $\rho$ (Rho): Dispersión por rotación de bits. Rota los 64 bits de cada una de las 25 palabras por una cantidad fija calculada triangularmente según su posición en la cuadrícula.
- $\pi$ (Pi): Transposición espacial. Permuta la posición física de las palabras en el plano $x-y$ según la transformación afín $(x, y) \mapsto (y, 2x + 3y \pmod 5)$.
- $\chi$ (Chi): Capa no lineal elemental. Es la única operación no lineal de Keccak, combinando cada bit con el complemento lógico de su vecino mediante puertas AND y XOR: $a_{x} \leftarrow a_{x} \oplus ((\neg a_{x+1}) \wedge a_{x+2})$.
- $\iota$ (Iota): Ruptura de simetrías de ronda. Suma una constante pseudoaleatoria de ronda generada por un registro lineal de desplazamiento (LFSR) sobre la palabra de origen $a_{0,0}$ para prevenir ataques de punto fijo.
Vectores de Prueba Oficiales NIST FIPS 202 para SHA3-256
Verifica el rigor de cualquier cálculo comparándolo con los vectores oficiales de calibración del NIST:
| Texto de Entrada | Hash Oficial SHA3-256 (64 caracteres hexadecimales) |
|---|---|
"" (cadena vacía) | a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a |
"abc" | 3a985da74fe225b2045c172d6bd390bd855f086e3e9d525b46bfe24511431532 |
"The quick brown fox jumps over the lazy dog" | 69070dda01975c8c120c3aada1b282394e7f032fa9cf32f4cb2259a0897dfc04 |
Para explorar otros estándares criptográficos de nuestra suite, consulta el Generador Whirlpool, el Generador BLAKE2b y el Convertidor de Texto a Cifra Base32.
Preguntas Frecuentes sobre el Generador de Hash SHA3-256 (FAQ)
¿SHA3-256 sustituye por completo a SHA-256?
No necesariamente. El NIST no diseñó SHA-3 para reemplazar a SHA-2 porque SHA-2 no ha sido vulnerado y continúa siendo seguro y ampliamente utilizado en estándares como Bitcoin, TLS 1.3 y DNSSEC. El propósito del NIST fue establecer un estándar formal complementario con una arquitectura completamente distinta (esponja Keccak frente a Merkle–Damgård) para garantizar que la infraestructura mundial disponga de una alternativa madura si en el futuro se descubriera una vulnerabilidad matemática imprevista en SHA-2.
¿Qué longitud de clave utiliza el modo HMAC-SHA3-256?
En el modo HMAC-SHA3-256, se recomienda una clave secreta de al menos 32 bytes (256 bits) para igualar la resistencia del digest. Debido a que el tamaño de bloque de absorción de SHA3-256 es de $r = 136$ bytes (1088 bits), cualquier clave de hasta 136 bytes se utiliza de forma directa con los rellenos ipad y opad sin necesidad de hashing previo, ofreciendo una autenticación de mensajes extraordinariamente robusta.
¿Es seguro procesar datos sensibles o contraseñas en esta herramienta?
Sí. Toda la computación de SHA3-256 y HMAC se realiza en tu navegador mediante TypedArrays y BigInt, sin enviar el texto a ningún servidor. La herramienta funciona incluso sin conexión a internet una vez cargada la página. Eso sí, para almacenar contraseñas de usuarios no debe usarse un hash rápido como SHA3-256, sino una función de derivación lenta como Argon2, scrypt o bcrypt.