piapia123
es

Calculadora de hash SHA-3 / SHAKE / Keccak

Cifrado

Todo se ejecuta en tu navegador: no se sube nada

Entrada
Arrastra un archivo aquí para cargarlo
Resultado

Tres familias de hash construidas sobre la misma permutación, reunidas en un sitio. Comparten una única implementación y solo se diferencian en un byte de relleno, y sus salidas no tienen ninguna relación. Ahí está la trampa: SHA3-256 y Keccak-256 no son lo mismo. Cuando el NIST finalizó SHA-3 en 2015 cambió el relleno de 0x01 a 0x06, y ese único byte hace que los dos produzcan resúmenes completamente distintos. Ethereum ha usado Keccak-256 original desde el primer día: las direcciones de contrato, los hashes de transacción, los topics de eventos y los selectores de método de ERC-20 se basan en él, así que comprobarlos contra SHA3-256 da algo perfectamente bien formado que nadie reconoce. Cada familia tiene su sitio; el desplegable las agrupa en consecuencia.

Funciones

  • Diez variantes: SHA3-224/256/384/512, SHAKE128/256 y Keccak-224/256/384/512
  • La longitud de salida de SHAKE es configurable (1–512 bytes); las demás las fija el estándar
  • Keccak original se lista aparte de SHA-3: Ethereum usa el primero
  • Salida en hexadecimal (mayúsculas o minúsculas) o Base64
  • El texto no ASCII se procesa como bytes UTF-8, igual que openssl y las herramientas de Ethereum
  • Implementado aquí, así que no depende de qué variantes de SHA-3 ofrezca el navegador

Cómo se usa

  1. Pega el texto en el campo de entrada
  2. Elige la variante (para todo lo relacionado con Ethereum, Keccak-256)
  3. Si elegiste una variante SHAKE, fija la longitud de salida
  4. Pulsa Ctrl/⌘ + Enter o Ejecutar, y copia el resultado

Preguntas frecuentes

¿Cuál es la diferencia entre SHA3-256 y Keccak-256?
Un byte de relleno, y resultados completamente distintos. Los dos usan la misma permutación Keccak-f[1600] y el mismo tamaño de bloque de 136 bytes; la única diferencia es el byte que se añade al final de la absorción. El Keccak original añade 0x01 y el SHA-3 finalizado por el NIST añade 0x06. Para la cadena vacía, Keccak-256 da c5d24601… mientras que SHA3-256 da a7ffc6f8…: ambos bien formados, ni un byte en común. Ethereum usa el Keccak original en todo, así que debes seleccionar Keccak-256 al verificar direcciones de contrato o hashes de transacción.
¿Qué es SHAKE y por qué su longitud de salida puede variar?
SHAKE es una función de salida extensible (XOF): puede exprimir tanta salida como se le pida, en lugar de unos 32 bytes fijos como SHA-256. No es truncamiento; se deriva de la construcción de esponja, que permuta de nuevo cada vez que se exprime un bloque y puede seguir indefinidamente. Encaja en casos que necesitan salida de longitud variable, como derivar varias claves de una misma semilla, y se usa mucho en KMAC y en firmas postcuánticas. Aquí el límite son 512 bytes, muy por encima del uso real.
¿Cuál de las diez variantes debería elegir?
Según el propósito. Para todo lo relacionado con Ethereum o blockchain, siempre Keccak-256, nunca SHA3-256. Para diseños nuevos que sigan los estándares del NIST, elige SHA3-224/256/384/512 por la longitud que necesites, y 256 es la más común. Para salida de longitud variable, como derivación de claves o expansión de números aleatorios, elige SHAKE128 (más rápida) o SHAKE256 (más margen de seguridad). Keccak-224/384/512 salen sobre todo al reproducir sistemas antiguos o comparar implementaciones.
¿Es SHA-3 más seguro que SHA-256? ¿Debería migrar?
Hoy no hace falta. SHA-256 no tiene ningún ataque práctico, y SHA-3 importa por otra razón: es estructuralmente distinto. SHA-2 se construye sobre Merkle–Damgård y SHA-3 sobre una esponja, así que sus debilidades no se solapan. SHA-3 es, por tanto, un seguro contra una futura ruptura de SHA-2 más que una opción más fuerte ahora mismo. Cualquiera de los dos sirve para sistemas nuevos; SHA-256 tiene mejor compatibilidad y más soporte de hardware.

Herramientas relacionadas