¿Qué es MD5?
MD5 (Message-Digest Algorithm 5) es una función hash que convierte cualquier texto en una huella de 128 bits, 32 caracteres en hexadecimal. La diseñó Ron Rivest en 1991 y durante muchos años fue la más usada para comprobar archivos y guardar contraseñas.
Un hash es como una huella digital del texto: el MD5 de una palabra o de un libro entero mide siempre 32 caracteres, cambia por completo con cualquier cambio (una letra, un espacio, una mayúscula) y no se puede deshacer para obtener el texto original. Por ejemplo, el MD5 de un texto vacío es siempre d41d8cd98f00b204e9800998ecf8427e.
¿Por qué MD5 ya no es seguro?
Un hash es seguro si nadie puede fabricar dos textos distintos con el mismo resultado (una colisión). En MD5 se encontraron colisiones en 2004, y hoy se generan en segundos con un ordenador normal. Se han usado en ataques reales: en 2008 se falsificó un certificado SSL, y en 2012 el virus Flame se hizo pasar por una actualización de Windows con una firma MD5 falsificada.
Por eso MD5 no debe usarse para nada que tenga que ver con la seguridad: firmas, certificados ni contraseñas. Para eso usa SHA-256.
¿Se puede descifrar un MD5?
No: un hash no se cifra, así que no se puede descifrar. Pero las contraseñas habituales ya están calculadas en enormes tablas de MD5, y un ordenador prueba miles de millones por segundo, así que el MD5 de una contraseña corta o común se averigua casi al momento. Para guardar contraseñas usa un algoritmo lento a propósito y con sal, como Argon2 o bcrypt.
¿Para qué se sigue usando?
Para detectar cambios accidentales, donde nadie intenta engañar, MD5 sigue siendo práctico y rápido: comprobar que un archivo se ha copiado o descargado entero, detectar archivos duplicados o generar claves de caché. Si lo que necesitas es el MD5 de un archivo, usa la herramienta hash de un archivo.