Comparativa · Desarrolladores

MD5 vs SHA-256: ¿qué hash usar y cuándo?

MD5 y SHA-256 son los dos algoritmos de hash más conocidos, y elegir mal entre ellos puede dejar un sistema vulnerable… o complicarlo sin necesidad. Ambos convierten cualquier dato en una cadena de longitud fija, pero uno está roto para seguridad desde hace años y el otro es el estándar actual.

MD5 genera un hash de 128 bits, es rapidísimo y lleva con nosotros desde 1992. SHA-256, de la familia SHA-2, genera 256 bits y es el algoritmo que protege desde certificados web hasta Bitcoin.

Qué es MD5 y por qué quedó obsoleto en seguridad

MD5 toma cualquier archivo o texto y produce una «huella» de 32 caracteres hexadecimales (128 bits). La misma entrada siempre da la misma huella, y un cambio mínimo en la entrada cambia la huella por completo. Durante años se usó para verificar descargas, almacenar contraseñas y firmar certificados.

El problema es que MD5 es vulnerable a colisiones: investigadores demostraron que es posible crear dos archivos distintos con el mismo hash MD5 (los primeros ataques prácticos se publicaron en 2004 y se perfeccionaron después). Eso rompe su uso en seguridad: un atacante podría sustituir un archivo legítimo por uno malicioso con el mismo hash.

Por eso los organismos de seguridad desaconsejan MD5 para firmas digitales, certificados y contraseñas desde hace más de una década. Usarlo hoy en esos contextos no es «menos seguro»: es inseguro.

Qué es SHA-256 y por qué es el estándar

SHA-256 pertenece a la familia SHA-2, publicada por el NIST en 2001, y produce una huella de 64 caracteres hexadecimales (256 bits). El espacio de hashes posibles es astronómicamente mayor que el de MD5, y tras más de dos décadas de análisis no se conocen colisiones prácticas.

Es el algoritmo detrás de gran parte de la seguridad moderna: certificados TLS, firmas de software, verificación de integridad en sistemas operativos y la minería de Bitcoin, que realiza billones de hashes SHA-256 por segundo. Cuando un sistema serio necesita un hash criptográfico, SHA-256 (o su hermano SHA-512) es la respuesta por defecto.

Su único «coste» frente a MD5 es la velocidad: es algo más lento, pero en hardware moderno la diferencia es irrelevante para casi todos los usos, y muchos procesadores incluyen instrucciones dedicadas que lo aceleran.

Comparativa directa

En seguridad, SHA-256 gana por knockout: MD5 está roto ante colisiones y no debe usarse para nada que requiera confianza. En tamaño del hash, SHA-256 duplica los bits (256 frente a 128), lo que multiplica exponencialmente la resistencia a ataques.

En velocidad, MD5 es más rápido en software puro, pero la diferencia rara vez importa: ambos procesan cientos de MB por segundo en un equipo normal. En adopción, MD5 aún aparece en sistemas antiguos y tutoriales desactualizados; SHA-256 es el estándar en todo lo nuevo.

Hay un matiz importante sobre contraseñas: ni MD5 ni SHA-256 «a secas» son adecuados para guardar contraseñas hoy; para eso existen funciones diseñadas para ser lentas a propósito, como bcrypt, scrypt o Argon2. Un hash rápido, aunque sea SHA-256, permite ataques de fuerza bruta demasiado veloces.

¿Cuál usar? La regla práctica

Usa SHA-256 siempre que el hash tenga que ver con seguridad o confianza: verificar la integridad de descargas importantes, firmar datos, generar identificadores que no deban falsificarse o cualquier sistema nuevo. Es la elección por defecto y no hay motivo para elegir otra.

MD5 conserva usos legítimos no relacionados con la seguridad: comprobaciones rápidas de integridad donde un atacante no es una amenaza (verificar que un archivo se copió bien), sumas de control en sistemas legacy que lo exigen, o deduplicación interna de datos. Ahí su velocidad y su ubicuidad lo mantienen útil.

Si estás validando datos estructurados en tu trabajo diario —por ejemplo, comprobando que un JSON está bien formado antes de procesarlo—, las herramientas gratuitas de formatear JSON (/herramientas-desarrollador/formatear-json/) y validar JSON (/herramientas-desarrollador/validar-json/) te ayudan a detectar errores de sintaxis al instante, que es donde suelen estar los problemas reales.

Errores típicos con los hashes

El error grave es seguir usando MD5 para contraseñas o firmas «porque siempre se hizo así». Migrar a SHA-256 (o a bcrypt/Argon2 para contraseñas) es una de las mejoras de seguridad más baratas que existen.

Otro error es creer que un hash es cifrado: un hash no se «descifra», es unidireccional. Si necesitas recuperar el dato original, necesitas cifrado, no hash.

Y un tercero: comparar hashes a ojo. Dos huellas SHA-256 difieren en docenas de caracteres; la comparación debe hacerla el programa, no tus ojos. Usa siempre la verificación automática que ofrecen las herramientas.

Herramientas gratuitas mencionadas

Preguntas frecuentes

¿MD5 es seguro para verificar descargas?

Para descargas de sitios oficiales donde el riesgo de un atacante sofisticado es bajo, MD5 detecta corrupciones accidentales perfectamente. Pero si la integridad es crítica (software de seguridad, firmware), usa SHA-256: protege también contra manipulación intencionada, algo que MD5 ya no garantiza.

¿Por qué no usar SHA-256 directamente para contraseñas?

Porque es demasiado rápido: un atacante con hardware moderno puede probar miles de millones de hashes SHA-256 por segundo. Para contraseñas se usan funciones como bcrypt, scrypt o Argon2, diseñadas para ser lentas y costosas de paralelizar, combinadas con una «sal» única por usuario.

¿Qué hash usan las criptomonedas como Bitcoin?

Bitcoin usa SHA-256 (doble SHA-256, en realidad) tanto en la minería como en la estructura de la cadena de bloques. Su resistencia a colisiones y a preimagen es una de las bases de la seguridad de la red.

En resumen

La comparativa tiene un ganador claro en seguridad: SHA-256 es el estándar moderno y MD5 no debe usarse donde haya un adversario. Pero MD5 no está «muerto»: sigue siendo útil para comprobaciones rápidas de integridad sin requisitos de seguridad. La regla es simple: ¿necesitas confianza? SHA-256. ¿Solo detectar errores accidentales en un sistema que ya usa MD5? Adelante. Y para contraseñas, ninguno de los dos a secas: usa bcrypt o Argon2.

Artículos relacionados

Privacidad por diseño. Tus archivos no salen de tu navegador.