ToolActToolAct

Generador de Hash MD5

Encriptación MD5 en línea, admite salida de 16 y 32 bits, conversión de mayúsculas y minúsculas

Entrada
Caracteres: 0
Salida
Caracteres: 0

Configuración de formato

¿Qué es la encriptación MD5?

MD5 (Algoritmo de Resumen de Mensajes 5) es una función hash criptográfica ampliamente utilizada, diseñada por el criptógrafo estadounidense Ronald Rivest en 1991. MD5 puede asignar datos de cualquier longitud a un valor hash fijo de 128 bits (16 bytes), generalmente representado como 32 dígitos hexadecimales. MD5 se utilizó ampliamente para verificación de integridad de datos, almacenamiento de contraseñas y firmas digitales. Sin embargo, en 2004, la criptógrafa china Wang Xiaoyun y su equipo descubrieron vulnerabilidades de colisión en MD5, permitiendo a los atacantes construir dos datos diferentes con el mismo valor MD5. Por lo tanto, MD5 ya no es adecuado para escenarios sensibles a la seguridad. Los formatos de salida MD5 vienen en dos tipos: el estándar de 32 bits (valor hash completo) y el truncado de 16 bits (tomando los 16 caracteres centrales del valor de 32 bits). Esta herramienta admite ambos formatos de salida con opciones de visualización en mayúsculas o minúsculas.

Cómo usar

Cómo usar

  1. Ingresa el texto a cifrar en el campo de entrada
  2. Selecciona el formato de salida: uppercase 32-bit, lowercase 32-bit, uppercase 16-bit o lowercase 16-bit
  3. El valor MD5 se calcula y se muestra automáticamente
  4. Haz clic en el botón 'Copiar' para copiar el resultado

Descripción del formato de salida

  • Usa la salida de 32 caracteres cuando necesites el resumen MD5 completo para sumas de verificación, claves de caché o campos de API heredados.
  • Usa la salida de 16 caracteres solo cuando un sistema heredado espere explícitamente los 16 caracteres centrales del resumen completo.

Descripción de mayúsculas y minúsculas

  • Los valores MD5 en mayúsculas y minúsculas contienen los mismos bytes hexadecimales; la diferencia está únicamente en el formato de visualización.
  • Al comparar valores MD5, respeta exactamente las mayúsculas y minúsculas que exige el sistema de destino para evitar discrepancias erróneas.

Casos de uso

Generar hashes de texto en formatos MD5 habitualesPega una cadena y obtén su resumen MD5 al instante en formato de 32 caracteres o los 16 caracteres centrales, con opciones de salida en mayúsculas y minúsculas. Esto coincide con los formatos que aún se encuentran en muchas API heredadas, claves de caché y campos de bases de datos. El texto se procesa dentro del navegador mediante la compresión MD5 estándar de 128 bits, por lo que la cadena original nunca abandona la pestaña; útil al reproducir un checksum interno heredado.
Comparar firmas heredadas durante la depuraciónCuando un sistema antiguo espera una representación MD5 específica, alternar entre lower32, upper32, lower16 y upper16 ayuda a identificar si la discrepancia está en el resumen en sí o solo en el formato de salida. Los recuentos de caracteres de entrada y salida facilitan detectar espacios en blanco accidentales, saltos de línea finales o bytes BOM: la misma cadena UTF-8 con y sin un CRLF final produce un hash diferente.
Procesar texto sensible localmenteLa implementación de MD5 se ejecuta en el navegador sobre texto codificado en UTF-8, por lo que identificadores internos, cadenas de prueba o secretos temporales no necesitan pegarse en un sitio web externo de hashing. MD5 se incluye por compatibilidad, no para almacenamiento de contraseñas moderno ni seguridad robusta: SHA-256 es la elección adecuada cuando importa la resistencia a colisiones.
Generar claves de caché a partir de nombres de archivo o identificadoresIntroduce un nombre de archivo, un slug de URL o una clave compuesta en la entrada y obtén un resumen estable de 32 caracteres como clave de caché para Redis, Memcached o listas de purga de CDN. El formato de 16 caracteres centrales también se adapta a espacios de claves heredados más cortos cuando importa el coste de almacenamiento, a costa de un espacio de colisión de ~2^16; aceptable para claves de caché, no para identidad.
Confirmar paridad de checksum entre dos sistemasCalcula el hash del mismo contenido localmente y compáralo con un MD5 emitido por una exportación heredada, un espejo FTP o un manifiesto de firmware. Una salida idéntica de 32 caracteres confirma la paridad de bytes; cualquier discrepancia apunta a diferencias de codificación, saltos de línea (CRLF vs LF), BOM o codificación de texto que vale la pena investigar antes de reportar un error de transferencia.

Principio técnico

MD5 (Message-Digest Algorithm 5) fue diseñado por Ronald Rivest en el MIT en 1991 y publicado como RFC 1321, sustituyendo al MD4 comprometido. Fue el hash de referencia en los años 90 y 2000: verificación de integridad de archivos, almacenamiento de contraseñas (de forma deficiente, sin sal), firmas digitales, huellas digitales de malware y el resumen por defecto en herramientas tan diversas como `md5sum`, `MD5()` de MySQL, el antiguo almacén de objetos de Git y `openssl dgst -md5`. La salida es de 128 bits (16 bytes), mostrados casi siempre como 32 caracteres hexadecimales en minúscula. El diseño sigue la construcción Merkle-Damgård: rellena el mensaje hasta un múltiplo de 512 bits, añade una longitud de 64 bits en little-endian y luego itera una función de compresión sobre cada bloque de 512 bits. El estado de 128 bits se expone en cuatro registros de 32 bits A, B, C, D, inicializados con constantes fijas (0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, elegidas como valores «nothing-up-my-sleeve»: son las raíces cuadradas de 2, 3, 5, 10 en little-endian). Cada bloque de 512 bits se divide en dieciséis palabras de 32 bits M[0..15] y se procesa en 4 rondas de 16 pasos (64 pasos en total). Las funciones de ronda son F = (X AND Y) OR (NOT X AND Z), G = (X AND Z) OR (Y AND NOT Z), H = X XOR Y XOR Z, I = Y XOR (X OR NOT Z); cada paso combina una función de ronda, una palabra del mensaje, una constante de ronda T[i] = floor(2^32 · |sin(i+1)|) y una rotación a la izquierda por una cantidad específica del paso, y luego suma el resultado de vuelta al estado. La intención de diseño de las 4 rondas: la ronda 1 es rápida y no lineal, la ronda 2 es paralelizable, la ronda 3 mezcla de forma más agresiva y la ronda 4 finaliza con una difusión fuerte. El estado final es el MD5 de todo el mensaje; esto es lo que hace de MD5 una función unidireccional en el sentido pre-cuántico. La caída: la resistencia a colisiones está rota, y eso es lo único que importa en uso criptográfico. Wang et al. publicaron un ataque de colisión completo en 2004 (los ataques CFRG redujeron la búsqueda de colisiones a unas horas en un PC). En 2008, investigadores usaron colisiones de MD5 para falsificar un certificado CA válido (el ataque de «colisión de prefijo elegido» de Stevens et al.), y en 2012 el malware Flame abusó de una colisión de MD5 aún no divulgada para falsificar un certificado de firma de código de Microsoft. El artículo de 2004 redujo el espacio de búsqueda de colisiones de 2^64 a aproximadamente 2^24, por lo que cualquier atacante con unas horas de cómputo puede producir dos mensajes con el mismo MD5. Tras Flame, Microsoft prohibió explícitamente MD5 en Authenticode; los navegadores revocaron certificados TLS firmados con MD5 entre 2014 y 2017; y el IETF lleva mucho tiempo desaconsejando MD5 en TLS, SSH e IPsec. Cifras de rendimiento en un portátil x86-64 moderno: MD5 hashea a 400-700 MB/s por núcleo (limitado por ancho de memoria en entradas grandes), SHA-256 a 200-300 MB/s, SHA-512 más rápido en CPUs de 64 bits por las operaciones con palabras de 64 bits. Para hash de contraseñas, MD5 es inadecuado independientemente del rendimiento: bcrypt/scrypt/Argon2id son sintonizables a propósito para derrotar la aceleración por GPU. En una sola RTX 4090, Hashcat benchmarks MD5 a aproximadamente 60 GH/s (gigahashes por segundo), 7-8 veces más rápido que SHA-256 en la misma GPU. Esa brecha es toda la razón por la que MD5 es peligroso: la GPU puede triturar tablas precomputadas en horas, no en años. `crypto.subtle.digest('MD5', bytes)` de Web Crypto funciona a velocidad casi de disco en Chrome, Edge y Firefox 102+; los navegadores más antiguos recurren a una implementación en JS puro (SparkMD5 o la propia de la página) a 50-150 MB/s. Vectores de prueba del RFC 1321: la cadena vacía produce d41d8cd98f00b204e9800998ecf8427e, 'a' produce 0cc175b9c0f1b6a831c399e269772661, 'abc' produce 900150983cd24fb0d6963f7d28e17f72. Si tu salida no coincide, el error es casi siempre un problema de codificación (pasar una cadena JS a una implementación MD5 en JS en lugar de bytes UTF-8) y no del algoritmo en sí.

  • La construcción Merkle-Damgård hace que MD5 sea vulnerable a la extensión de longitud: dado H(secret || msg), un atacante puede calcular H(secret || msg || padding || extra) sin conocer secret. Por eso MD5(secret || message) no es un MAC seguro; usa HMAC-MD5 (RFC 2104) o HMAC-SHA256, que emplean una estructura diferente (hash anidado de dos claves) resistente a este ataque.
  • Vectores de prueba (RFC 1321): la cadena vacía produce d41d8cd98f00b204e9800998ecf8427e, 'a' produce 0cc175b9c0f1b6a831c399e269772661, 'abc' produce 900150983cd24fb0d6963f7d28e17f72. Si tu implementación no produce estos valores, el error es casi siempre un problema de codificación (pasar una cadena JavaScript a una implementación MD5 en JS en lugar de bytes UTF-8 mediante TextEncoder), no del algoritmo.
  • Tasa de hash: un solo núcleo de una CPU x86-64 moderna procesa MD5 a unos 400-700 MB/s, limitado por el ancho de banda de memoria en entradas grandes. SHA-256 es aproximadamente un 30% más lento, a 200-300 MB/s, y SHA-512 es más rápido en CPUs de 64 bits porque opera con palabras de 64 bits. Para hash de contraseñas específicamente, la elección correcta es bcrypt (factor de coste 12) / scrypt / Argon2id, que son intencionadamente lentos y sintonizables para derrotar la aceleración por GPU.
  • Las «4 funciones de ronda» F, G, H, I fueron deliberadamente nombradas para leerse como una frase ('FiGiHI' / 'figi hi'), una firma de Rivest. Cada una opera solo a nivel de bits y usa una estructura de mezcla diferente para que el algoritmo no colapse a un sistema lineal o afín bajo criptoanálisis. El concepto de S-box de DES / AES no existe en MD5; la seguridad proviene de la expansión de palabras del mensaje y las constantes de rotación, no de tablas de sustitución.
  • Benchmark de Hashcat en una sola RTX 4090: aproximadamente 60 GH/s para MD5 (contra hash puro) y 30 GH/s para MD5 con sal. SHA-256 en la misma GPU es 8 GH/s. La brecha de 7-8x es por la que los atacantes prefieren MD5: la GPU puede triturar tablas precomputadas en horas, no en años. Usa SHA-256, bcrypt o Argon2id para cualquier cosa que deba resistir un ataque offline.
  • El «MD5 doble» (MD5(MD5(x))) aparece a veces en código antiguo de PHP y MySQL, frecuentemente con una sal. No ayuda contra ataques de colisión (una colisión de MD5 es también colisión de MD5(MD5()) con trabajo O(1) adicional) y solo ralentiza ligeramente la búsqueda de preimagen (un factor de 2). El hash moderno de contraseñas (Argon2id del RFC 9106, scrypt del RFC 7914, bcrypt con coste ≥ 12) es la única respuesta correcta para almacenamiento de contraseñas; si ves MD5 en una columna de contraseñas moderna, es un bug.
  • Migrar desde MD5: si mantienes un sistema que usa MD5 actualmente, la migración correcta es escritura dual (calcular tanto MD5 como SHA-256 en lectura, preferir SHA-256 en nuevas rutas de código) durante una ventana de deprecación, y luego eliminar MD5 cuando nada dependa de él. Para protocolos heredados que requieren MD5 estrictamente (NTLM, RADIUS challenge-response, algunos modos de Kerberos), MD5 no va a desaparecer pronto; Microsoft parcheó NTLM para usar AES en 2010, pero la versión antigua sigue activa por defecto por compatibilidad, y deberías deshabilitar NTLMv1 completamente si tienes sistemas Windows heredados.
  • La implementación de la página: cuando Web Crypto está disponible (Chrome, Edge, Firefox 102+), se usa `crypto.subtle.digest('MD5', utf8Bytes)`, que se ejecuta en código nativo a velocidad casi de disco. Cuando no está disponible, se usa una implementación en JS puro (SparkMD5 0.7 o la propia de la página), que funciona a 50-150 MB/s. Ambas producen resultados idénticos, así que los vectores de prueba pasan en ambos backends. El paso de codificación es `new TextEncoder().encode(str)`, que siempre produce bytes UTF-8; no pases una cadena JavaScript directamente a una implementación MD5 solo-JS o obtendrás un hash incorrecto con cualquier entrada no ASCII.

Ejemplos

Cadena vacía y texto corto

Cadena vacía -> d41d8cd98f00b204e9800998ecf8427e
hello      -> 5d41402abc4b2a76b9719d911017c592

RFC: RFC 1321 sección A.1 define estos vectores de prueba

Sensibilidad a mayúsculas

hello world -> 5eb63bbbe01eeed093cb22bb8f5acdc3
Hello       -> 8b1a9953c4611296a827abf8c47804d7
HELLO       -> eb61eead90e3b899c6bcbe27ac581660

Nota: cambiar un solo carácter modifica por completo el hash (efecto avalancha)

Números y puntuación

123456       -> e10adc3949ba59abbe56e057f20f883e
Hello, World! -> 65a8e27d8879283831b664bd8b7f0ad4
file.txt     -> 3d8e577bddb17db339eae0b3d9bcf180

Nota: cualquier cambio en la puntuación o los espacios produce un digest completamente distinto

Por qué MD5 no se recomienda para seguridad

Ataque de colisión: En 2004, los investigadores encontraron formas de crear dos
mensajes diferentes con el mismo hash MD5. Esto rompe las firmas digitales y
la validación de certificados.

Para seguridad, usa SHA-256 o SHA-3:
  MD5:    128 bits, resistencia a colisiones rota (ataque factible)
  SHA-256: 256 bits, sin colisiones prácticas conocidas
  SHA-512: 512 bits, margen aún mayor

NIST: NIST ha desaconsejado MD5 para uso criptográfico desde 2005
Uso: MD5 sigue siendo seguro para verificación de integridad de archivos, deduplicación y claves de caché

Preguntas frecuentes

¿Qué es MD5?

MD5 (Message Digest 5, RFC 1321) es una función hash de 128 bits publicada por Ron Rivest en 1991. Siempre devuelve 32 caracteres hexadecimales sin importar la longitud de la entrada, y la salida cambia por completo aunque solo cambie un bit de entrada. Es rápida: cientos de MB/s en una CPU moderna.

¿Es seguro MD5?

No para fines de seguridad. Los ataques de colisión contra MD5 son prácticos desde 2004, y las colisiones con prefijo elegido desde 2007. No uses MD5 para firmas digitales, hashes de certificados, almacenamiento de contraseñas ni ninguna detección de manipulación donde un atacante pueda elegir alguna de las entradas.

¿Para qué puedo seguir usando MD5?

Para detectar corrupción accidental: sumas de comprobación de descargas, deduplicación simple de archivos confiables y huellas rápidas tipo ETag. Muchos proveedores siguen publicando MD5 por compatibilidad, a menudo junto con SHA-256.

¿El cálculo se hace localmente?

Sí. El MD5 del texto pegado se calcula en tu navegador. No se sube ni registra nada. Puedes confirmarlo revisando la pestaña Network mientras hashas.

¿Por qué la misma cadena produce un MD5 distinto en otro lugar?

Casi siempre por una diferencia de carácter oculta: una marca BOM de UTF-8, un salto de línea final, CRLF en lugar de LF, o que una herramienta codifica como UTF-8 mientras otra codifica como UTF-16. El propio algoritmo MD5 es totalmente determinista entre implementaciones.

¿Son iguales el MD5 en mayúsculas y en minúsculas?

Sí. Los 128 bits de salida son idénticos; el uso de mayúsculas o minúsculas es solo una convención de visualización. Los verificadores deben comparar sin distinguir mayúsculas y minúsculas.

¿En qué se diferencia MD5 de MD5(salt + contraseña)?

El MD5 simple de una contraseña es trivial de descifrar con tablas rainbow. Añadir una sal bloquea las tablas precalculadas, pero MD5 sigue siendo demasiado rápido para hashear contraseñas. Usa bcrypt/scrypt/Argon2 para contraseñas; MD5 (con o sin sal) no es la herramienta adecuada para ese trabajo.