Visualizador Hash de cadenas
Introduce texto para calcular y comparar visualmente los hashes MD5, SHA-1, SHA-256 y SHA-512 con bloques de colores.
Cómo funciona
- Introduce tu texto: escribe o pega cualquier cadena, contraseña, contenido de archivo, identificador o cualquier texto para hashear.
- Elige un algoritmo: selecciona MD5, SHA-1, SHA-256, SHA-384 o SHA-512 según tu necesidad.
- Copia el hash: el valor del hash aparece al instante. Cópialo para almacenamiento, comparación o verificación.
¿Por qué usar el generador de hash de cadena?
El hashing transforma cualquier cadena en una huella de longitud fija, propia de su contenido. Un solo carácter modificado produce un hash completamente distinto. Es esencial para verificar la integridad de los datos, almacenar contraseñas con seguridad, generar claves de caché, deduplicar registros y crear identificadores basados en el contenido. Como el hashing es de un solo sentido, es imposible recuperar el texto original a partir del hash, lo que lo hace seguro para guardar datos sensibles.
Funcionalidades
- Varios algoritmos: MD5, SHA-1, SHA-256, SHA-384 y SHA-512, todos en una misma herramienta.
- Hashing en tiempo real: el hash se actualiza al instante mientras escribes, sin hacer clic en un botón.
- Sensible a la caja: «Hello» y «hello» producen hashes distintos, por diseño.
- Copiar al portapapeles: copia del hash con un clic.
- 100 % en el navegador: las cadenas nunca salen de tu dispositivo, seguro para contenidos sensibles.
Preguntas frecuentes
¿Qué algoritmo de hash elegir?
Para los usos sensibles (contraseñas, firmas), usa SHA-256 o SHA-512. MD5 y SHA-1 están obsoletos para seguridad pero siguen siendo útiles para sumas de comprobación y claves de caché donde la robustez criptográfica no es necesaria.
¿Puedo usar esta herramienta para hashear contraseñas que voy a guardar?
El hash de cadena te da un hash de un solo sentido, pero para guardar contraseñas hay que usar una función de derivación de clave como bcrypt, Argon2 o PBKDF2 que integre sal e iteraciones. Los hashes SHA simples son demasiado rápidos y vulnerables a los ataques por tablas arcoíris.
¿Los hashes son reversibles?
No. Las funciones hash son de un solo sentido, es imposible recuperar la cadena original a partir de su hash. Si dos cadenas producen el mismo hash (colisión), es un defecto del algoritmo. SHA-256 y SHA-512 no tienen colisiones prácticas conocidas.
Una historia de 35 años de funciones hash: de MD5 a BLAKE3
Las funciones hash criptográficas evolucionaron a través de una larga secuencia de ciclos romper-y-reemplazar. MD5 fue publicado por Ronald Rivest en RFC 1321 (abril de 1992) como sucesor de MD4. Su salida de 128 bits se consideró lo suficientemente fuerte durante más de una década hasta que Wang y Yu publicaron la primera colisión práctica en 2004. Para 2008, los investigadores habían usado colisiones de MD5 para forjar una autoridad de certificación SSL fraudulenta. SHA-1 fue diseñado por la NSA y estandarizado por NIST en FIPS 180-1 (1995). Su salida de 160 bits resistió hasta febrero de 2017, cuando Google y CWI Amsterdam anunciaron el ataque SHAttered, produciendo dos PDFs con el mismo hash SHA-1. Costos: aproximadamente 6.500 años-CPU equivalentes en GPUs. SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512), también de la NSA, fue publicado en FIPS 180-2 (agosto de 2002). Usa la misma construcción Merkle-Damgård que SHA-1 pero con estados más grandes y más rondas; no existe ataque práctico en las versiones completas hoy. SHA-3 (Keccak, de Bertoni et al.) fue seleccionado por NIST después de una competencia pública y estandarizado en FIPS 202 (agosto de 2015). SHA-3 usa una construcción esponja completamente diferente, inmune a los ataques de extensión de longitud que afectan SHA-2. Fuera de la familia NIST, BLAKE2 (Aumasson et al., 2012) y BLAKE3 (2020) ofrecen seguridad de clase SHA-3 con la velocidad de MD5; BLAKE3 hashea un archivo de 1 GB en aproximadamente un segundo en una laptop moderna.
Qué algoritmo elegir: una tabla de decisión rápida
- MD5 (128 bits). Roto desde 2004. Aceptable para usos no de seguridad: invalidación de caché, deduplicación de archivos donde controlas ambos lados, sumas de verificación contra corrupción accidental. Nunca usar para contraseñas, firmas o cualquier contexto adversarial.
- SHA-1 (160 bits). Roto desde 2017 (SHAttered). Git todavía lo usa para hashes de commits, pero en marzo de 2017 Git comenzó a incrustar detección de colisiones (SHA-1DC) para rechazar patrones de ataque conocidos. Evita SHA-1 para código nuevo.
- SHA-256 (256 bits). El caballo de batalla actual. Usado por Bitcoin, certificados TLS, firmas de paquetes Linux, firma JWT (HMAC-SHA256), y la mayoría de APIs modernas. Rápido en hardware (extensiones Intel SHA, extensiones criptográficas ARMv8). Elección predeterminada para hashing de propósito general.
- SHA-512 (512 bits). Misma familia, salida más grande. Ligeramente más rápido que SHA-256 en máquinas de 64 bits porque su estado interno es de 64 bits. Usa cuando necesitas resistencia extra a colisiones o cuando 256 bits se siente restrictivo (raro).
- SHA-3 / Keccak (224/256/384/512 bits). La alternativa esponja estandarizada a SHA-2. Resistente a ataques de extensión de longitud que afectan SHA-2 (relevante al construir hashes con clave sin HMAC). Más lento en software que SHA-256 en la mayoría de CPUs pero inmune a una clase diferente de ataques.
- BLAKE2 / BLAKE3. Alternativas modernas no-NIST. BLAKE3 es el hash criptográfico más rápido ampliamente disponible, hasheando a aproximadamente velocidad de memcpy gracias al paralelismo. Usado en
b3sum, IPFS, y el protocolo VPN WireGuard. Aún no encrypto.subtle, pero disponible vía bibliotecas.
Dónde se usa realmente el hashing
- Verificación de integridad de archivos. Las distribuciones Linux publican sumas SHA-256 junto a las descargas ISO para que puedas verificar que el archivo no fue corrompido en tránsito o modificado por un atacante.
sha256sum -c ubuntu.sha256en 10 segundos. - Almacenamiento direccionado por contenido. Git usa SHA-1 (transicionando a SHA-256) para identificar cada commit, árbol y blob. IPFS, imágenes Docker (sha256:...), y rutas de store Nix todos usan direccionamiento por contenido. El hash ES el identificador.
- Claves de caché. Hashear una URL o una petición serializada te da una clave de longitud fija que se adapta a cualquier sistema de almacenamiento. Stripe, GitHub, cada CDN usa esto para búsquedas de caché.
- Deduplicación. Sistemas de respaldo (Time Machine, Borg, Restic) hashean bloques de archivos y solo almacenan los únicos. Dos bloques idénticos de 4 KB a través de diferentes archivos mapean a un solo fragmento almacenado.
- HTTP ETags. Los servidores web envían el hash de una respuesta como el encabezado
ETag. Los navegadores lo envían de vuelta conIf-None-Match; el servidor devuelve 304 si no cambió. Ahorra descargas redundantes. - Firmas JWT y webhook. Los JSON Web Tokens firman su payload con HMAC-SHA256 (HS256 en la spec). Stripe, GitHub, los webhooks Twilio todos firman sus payloads para que puedas verificar que no fueron manipulados en tránsito.
- Blockchains. Bitcoin usa doble SHA-256 para prueba de trabajo y enlace de bloques. Ethereum usa Keccak-256 (una variante SHA-3). Todo el concepto de blockchain descansa en la propiedad de que encontrar dos entradas con el mismo hash es computacionalmente infactible.
Errores de hashing que pierden dinero o rompen cosas
- Usar hashes SHA para almacenamiento de contraseñas. SHA-256 es rápido: una GPU moderna calcula ~10 mil millones de hashes SHA-256 por segundo. Con una base de datos filtrada, un atacante puede probar cada palabra de un diccionario más todas las transformaciones comunes en minutos. Usa Argon2id (ganador del Password Hashing Competition 2015), bcrypt, o scrypt. Son deliberadamente lentos y exigentes en memoria.
- Olvidar la sal. Incluso con un hash lento, la misma contraseña hasheada sin sal produce la misma salida para todos los usuarios, permitiendo tablas arcoíris y detección por canal lateral de contraseñas duplicadas. Siempre almacena una sal aleatoria por usuario junto al hash.
- Ataques de extensión de longitud en SHA-2.
hash(secret + message)con SHA-256 es vulnerable: un atacante que conoce el hash y la longitud desecretpuede añadir datos arbitrarios y calcular el hash resultante sin conocersecret. Usa HMAC-SHA256 en su lugar. SHA-3 y BLAKE2/3 son inmunes. - Comparación de cadenas en tiempo constante. Comparar hashes (o cualquier valor secreto) con
==en JavaScript filtra información a través del timing: una función que sale al primer mismatch de byte permite a los atacantes aprender el hash correcto byte por byte a lo largo de muchas peticiones. Usacrypto.timingSafeEqualen Node,hmac.compare_digesten Python. - Hashear cadenas sin especificar codificación.
sha256("hello")en Python 3 da error (necesitas bytes); en Node defecta a UTF-8; en PHP y Java el predeterminado puede variar. Diferentes codificaciones producen diferentes hashes. Siempre codifica como UTF-8 explícitamente antes de hashear. - Truncar hashes para «IDs cortos». Un corte de 64 bits de SHA-256 es conveniente para IDs cortos pero la paradoja del cumpleaños significa que las colisiones aparecen a ~2³² elementos (alrededor de 4 mil millones), no 2⁶⁴. Si truncas, planifica el manejo de colisiones a la escala esperada.
- Tratar la salida de hash como cadena segura para URL. Los bytes crudos del hash no son imprimibles. Usa hex (lo más común) o base64url. El base64 estándar contiene
+y/que rompen en URLs y nombres de archivo; base64url es la variante segura.
Más preguntas frecuentes
¿Por qué MD5 y SHA-1 están «rotos» si todavía producen hashes?
«Roto» significa que un atacante puede producir colisiones más rápido que la fuerza bruta. Para MD5, encontrar dos entradas con el mismo hash toma segundos en una laptop hoy. Para SHA-1, tomó 6.500 años-CPU en 2017 y ha caído dramáticamente desde entonces. Los hashes todavía funcionan mecánicamente; lo que está roto es la garantía de seguridad de que son «resistentes a colisiones». Para usos no-adversariales (sumar un archivo en el que confías contra corrupción accidental) MD5 todavía funciona bien. Para cualquier cosa que involucre un adversario, ambos son inseguros.
¿Debería preocuparme por las computadoras cuánticas rompiendo SHA-256?
Menos de lo que podrías pensar. El algoritmo de Grover acelera ataques de preimagen contra un hash de 256 bits de 2²⁵⁶ a 2¹²⁸ trabajo clásico-equivalente, que sigue siendo efectivamente imposible. Las primitivas simétricas (hashes, AES) sobreviven a la computación cuántica duplicando tamaños de clave/salida. La criptografía de clave pública (RSA, ECDSA) es lo que cae duro a ataques cuánticos, de ahí los estándares post-cuánticos NIST publicados en agosto de 2024 (ML-KEM, ML-DSA, SLH-DSA). Si estás usando SHA-256 hoy, SHA-512 en la era post-cuántica será más que suficiente.
¿Cuál es la diferencia entre un hash y HMAC?
Un hash (SHA-256) es sin clave: cualquiera con la entrada puede calcular la misma salida. Un HMAC (Hash-based Message Authentication Code) envuelve el hash con una clave secreta, así solo alguien que conozca la clave puede calcular o verificar el tag. Definido en RFC 2104 (1997), HMAC es la forma estándar de «firmar» un mensaje simétricamente (emisor y receptor comparten un secreto). Usa HMAC-SHA256 para firmas de webhook, JWT HS256, firma de petición API. SHA-256 simple sobre secret + message es inseguro debido a la extensión de longitud.
¿Por qué diferentes bibliotecas dan diferentes hashes para la misma cadena?
Tres causas comunes. Primera, codificación de caracteres: UTF-8 vs UTF-16 vs Latin-1 dan diferentes bytes para cadenas no-ASCII, por lo tanto diferentes hashes. Codifica siempre explícitamente. Segunda, finales de línea: "hello\n" y "hello\r\n" hashean diferente; las sumas de verificación Windows-vs-Unix a menudo difieren por esta razón. Tercera, formato de salida: hex minúscula vs hex mayúscula vs base64 se ve como un valor diferente pero representa los mismos bytes. Normaliza los formatos de entrada y salida antes de comparar.
¿Mi entrada se envía a un servidor cuando hasheo aquí?
No. Los cuatro hashes se calculan en tu navegador usando la API Web Crypto integrada (crypto.subtle.digest). Abre la pestaña Red en DevTools y escribe en la entrada, verás cero solicitudes salientes. Seguro para credenciales, tokens o cualquier valor privado que quieras hashear sin que salga de tu dispositivo.