El MD5 y el SHA-256 convierten cualquier entrada en un digest de longitud fija, pero solo uno de los dos sobrevive cuando alguien intenta romperlo a propósito. El MD5 tiene 128 bits y es rompible desde 2004: un atacante puede construir dos archivos distintos que den el mismo digest MD5, a propósito, con hardware corriente. El SHA-256 tiene 256 bits, y hasta 2026 nadie publicó una colisión contra él. Usa SHA-256 siempre que un archivo, un mensaje o una firma puedan ser moldeados por alguien que busca un resultado específico. El MD5 todavía sirve para un solo trabajo: avisarte de que una descarga no se corrompió por accidente, cuando nadie involucrado está intentando engañarte.
Qué cambia realmente entre los dos algoritmos
La longitud del digest es la diferencia visible, pero no es la razón por la que uno está roto y el otro no.
| MD5 | SHA-256 | |
|---|---|---|
| Longitud del digest | 128 bits, 32 caracteres hex | 256 bits, 64 caracteres hex |
| Estandarizado | 1992, RFC 1321 | 2001, FIPS 180-2, familia SHA-2 |
| Colisiones encontradas | Sí, desde 2004 | Ninguna publicada |
| Ataques de preimagen | Ninguno práctico | Ninguno práctico |
| Sirve para firmas, certificados, cualquier cosa adversarial | No | Sí |
| Sirve para detectar corrupción accidental | Sí | Sí, y más lento sin beneficio acá |
Un digest corto por sí solo no volvería inseguro a un algoritmo: hay diseños viejos y más angostos que nunca se rompieron. Lo que le pasó al MD5 es específico y tiene fecha: todo el argumento de seguridad de una función hash depende de que nadie pueda encontrar dos entradas que colisionen, y para el MD5 eso dejó de ser cierto hace dos décadas.
Resistencia a colisiones no es lo mismo que resistencia a preimagen
Dos garantías distintas se meten en la misma bolsa de "los hashes se pueden romper", y el MD5 está en lados opuestos de cada una.
Una colisión significa que un atacante construye dos entradas distintas y elige las dos, así que ambas caen en el mismo digest. En agosto de 2004, Xiaoyun Wang, Dengguo Feng, Xuejia Lai y Hongbo Yu publicaron un método que hace esto con el MD5 en cerca de una hora con el hardware de aquel año; en cualquier máquina actual toma segundos. Esa es una rotura real, repetible y práctica.
Un ataque de preimagen significa que un atacante parte de un digest que no eligió —uno que ya publicaste— y tiene que encontrar cualquier entrada que lo produzca. Nadie tiene un ataque de preimagen práctico contra el MD5 hasta 2026. Esa es toda la razón por la que el MD5 todavía detecta una descarga corrompida: el checksum de tu archivo nunca fue un valor que un atacante eligió de antemano, así que la resistencia que ese trabajo necesita es justo la que el MD5 conserva.
Esa distinción decide todo sobre si el MD5 es seguro en un lugar dado. Si un atacante puede producir o influir en el archivo antes de que lo hashees, necesitas resistencia a colisiones, y el MD5 no tiene ninguna. Si solo estás comprobando que los bytes que recibiste coinciden con los que generó una fuente confiable, el trabajo necesita algo más parecido a resistencia a preimagen, y el MD5 todavía tiene suficiente de eso.
Qué le da realmente una colisión de prefijo elegido a un atacante
La rotura de 2004 produce dos blobs colisionantes construidos desde cero —inútiles a menos que consigas que los dos se acepten como documentos legítimos—. Una técnica posterior, la colisión de prefijo elegido, es la que volvió peligroso al MD5 en la práctica.
Una colisión de prefijo elegido deja que un atacante parta de dos documentos arbitrarios que realmente quiere —no blobs inventados para la ocasión— y agregue un relleno calculado con cuidado a cada uno para que las versiones con relleno compartan un digest MD5. En diciembre de 2008, un equipo que incluía a Alexander Sotirov y Marc Stevens usó exactamente esto para falsificar una autoridad certificadora intermedia impostora: consiguieron que una autoridad certificadora real, que todavía firmaba con MD5, firmara un certificado de apariencia inofensiva, y el relleno hacía que esa misma firma fuera igual de válida para un segundo certificado que los investigadores habían construido —uno con el poder de emitir certificados para cualquier dominio, confiable para cualquier navegador que confiara en firmas MD5—. Eso es lo que da la resistencia a colisiones, dicho en una sola frase: sin ella, una firma sobre un documento es una firma sobre cualquier otra cosa que el algoritmo del firmante haya dejado que alguien más le pegue al lado.
Por qué un checksum al lado del archivo no prueba nada
Esta parte no tiene nada que ver con qué algoritmo elijas. Si una página de descarga te muestra un archivo y un checksum en la misma respiración, quien pueda reemplazar el archivo puede reemplazar el número de abajo en la misma edición. Un checksum SHA-256 en una página comprometida es tan convincente como uno MD5: nada. Verificaste el archivo contra sí mismo, no contra algo independiente.
La autenticidad de verdad necesita que el checksum —o mejor, una firma digital completa— llegue por una vía que la persona que podría alterar el archivo no controle también: una clave de firma en la que ya confías, comprobada con algo como gpg --verify, o un checksum publicado en un lugar separado de la descarga, como una lista de correo de seguridad o un dominio completamente distinto. El generador de hash te va a decir con honestidad si los bytes que tenés coinciden con el número que te dieron; no tiene forma de decirte si ese número alguna vez fue confiable.
Cuándo el MD5 sigue siendo la herramienta correcta
En ningún lugar adversarial, y en bastantes que no lo son. El MD5 sigue estando bien, y suele ser más rápido, para trabajos donde nadie intenta producir un resultado específico: detectar una transferencia de archivo truncada, deduplicar archivos en los que ya confiás por su contenido, etiquetar objetos en cache, o comprobar contra un checksum publicado por el mismo equipo que hizo el software, por un canal en el que ya confiás por otras razones. Nada de eso necesita resistencia a colisiones, porque nadie está fabricando una entrada adversarial: la corrupción que estás buscando es accidental, no diseñada.
Lo que el MD5 nunca más debería tocar: una firma digital, un certificado, un token de recuperación de contraseña, cualquier cosa donde un digest haga las veces de un documento que alguien más podría haber moldeado para colisionar con él. El SHA-256 casi no cuesta nada extra en hardware actual y elimina la pregunta por completo.
El generador de hash calcula MD5 y SHA-256 al mismo tiempo para el mismo texto o archivo, así podés ver qué tan distinto reaccionan a un cambio de un solo carácter, y pegar un checksum publicado para compararlo contra cualquiera de los dos. Nada sale de tu máquina.
Si querés el modelo completo detrás de todo esto —qué es realmente un digest, por qué no se puede revertir, y dónde el hashing deja de ser la herramienta correcta— qué es una función hash y qué no es cubre el resto.
Preguntas frecuentes
¿El MD5 todavía es seguro?
No para nada adversarial. Un atacante puede construir dos archivos distintos que produzcan el mismo digest MD5 a propósito, lo que rompe cualquier uso donde un digest sustituya a un documento, como una firma o un certificado. Para detectar una descarga corrompida por accidente, el MD5 sigue estando bien, porque nadie diseñó tu archivo para colisionar con nada.
¿Cuál es la diferencia entre un ataque de colisión y uno de preimagen?
Un ataque de colisión deja que un atacante elija dos entradas distintas y las haga compartir un digest, que es lo que rompió al MD5 en 2004. Un ataque de preimagen parte de un digest que el atacante no eligió e intenta encontrar cualquier entrada que lo produzca, lo cual sigue siendo impráctico contra el MD5. Casi toda debilidad real del MD5 es un ataque de colisión, no de preimagen.
¿Puedo confiar en el checksum publicado junto a una descarga?
Solo hasta donde confíes en la página donde está. Si quien controla la descarga también puede editar el checksum de al lado, una coincidencia solo confirma que el archivo coincide consigo mismo, sea MD5, SHA-256 o cualquier otra cosa. La verificación real necesita una firma o un checksum entregado por un canal separado y confiable.
¿Debería cambiar del MD5 al SHA-256 en todos lados?
Para todo lo que alguien pueda querer manipular en la entrada —firmas, certificados, tokens de seguridad— sí, y prácticamente no cuesta nada hacerlo en hardware actual. Para trabajos no adversariales como deduplicar archivos confiables o detectar una descarga truncada, el MD5 sigue funcionando y cambiar no aporta nada.
¿Qué diferenció al ataque de MD5 de 2008 del de 2004?
La colisión de 2004 produjo dos blobs sin sentido construidos para coincidir entre sí. La técnica de prefijo elegido de 2008 dejó que los atacantes partieran de dos documentos que realmente querían, incluida una solicitud de firma de una autoridad certificadora real, y rellenaran cada uno para que compartiera un digest MD5 con el otro, que fue lo que les permitió falsificar una autoridad certificadora impostora en la que confiaban los navegadores comunes.
Última actualización 24 de septiembre de 2026