MD5 vs SHA: ¿Qué Algoritmo Hash Usar?
Elegir el algoritmo hash correcto depende de tu caso de uso. Esta guía compara las opciones comunes y te ayuda a hacer la elección correcta.
Comparación de Seguridad
MD5 se considera criptográficamente roto desde 2004, cuando investigadores demostraron ataques de colisión prácticos. Un atacante puede crear dos entradas diferentes que producen el mismo hash MD5. Esto es devastador para aplicaciones de seguridad—pueden crearse certificados falsos y puede falsificarse integridad de archivos. SHA-1 fue oficialmente roto en 2017 cuando Google demostró una colisión entre dos archivos PDF diferentes. El ataque requirió enorme poder computacional (6,500 años de tiempo CPU), pero continúa volviéndose más práctico. La mayoría de navegadores y autoridades certificadoras ya no aceptan certificados SHA-1. SHA-256 permanece seguro sin ataques prácticos. Como parte de la familia SHA-2, diseñado por la NSA y publicado por NIST, ha sido sometido a escrutinio público desde 2001 sin debilidades significativas. Es el estándar actual para la mayoría de aplicaciones criptográficas. SHA-512 ofrece un margen de seguridad mayor que SHA-256. Aunque ambos son actualmente seguros, SHA-512 proporciona amortiguador adicional contra futuros avances criptoanalíticos. Algunos protocolos lo requieren específicamente.
Diferencias de Rendimiento
MD5 es el más rápido de los algoritmos hash comunes. Su salida de 128 bits requiere menos computación. Para casos de uso sin seguridad como checksums o tablas hash, esta velocidad puede ser relevante. SHA-1 es algo más lento que MD5, pero aún rápido. El digest de 160 bits requiere rondas de cálculo adicionales. En la mayoría de aplicaciones, la diferencia de rendimiento es insignificante. SHA-256 requiere más cálculo que MD5 o SHA-1. Sin embargo, las CPUs modernas aún lo procesan a varios cientos de megabytes por segundo. Para la gran mayoría de aplicaciones, el rendimiento no es un problema. SHA-512 puede sorprendentemente ser más rápido que SHA-256 en procesadores de 64 bits. Su diseño aprovecha operaciones de 64 bits, mientras SHA-256 está optimizado para 32 bits. En sistemas de 64 bits, SHA-512 a menudo supera a SHA-256. En la práctica, todos estos algoritmos son lo suficientemente rápidos para casos de uso típicos. Elige basándote en requisitos de seguridad, no en rendimiento, a menos que estés procesando cantidades enormes de datos.
Recomendaciones por Caso de Uso
Para almacenamiento de contraseñas no uses ninguno de estos directamente. Usa bcrypt, scrypt o Argon2, que están específicamente diseñados para almacenamiento de contraseñas con lentitud intencional y salting incorporado. Estos algoritmos hacen los ataques de fuerza bruta imprácticos. Para integridad de archivos usa SHA-256. Verifica descargas contra checksums SHA-256 publicados. SHA-256 proporciona garantía fuerte de que el archivo no fue manipulado o corrompido. Para firmas digitales usa SHA-256 o SHA-512. Los estándares de firma modernos requieren algoritmos de la familia SHA-2. Las firmas antiguas con MD5 o SHA-1 deberían ser migradas. Para commits Git e identificadores no críticos, SHA-1 es aceptable. Git está migrando a SHA-256, pero para identificadores de commit donde las colisiones serían notorias, SHA-1 es prácticamente seguro. Para checksums y deduplicación donde la seguridad no es crítica, incluso MD5 es aceptable. Si estás comparando archivos conocidos y benignos por duplicados, la velocidad de MD5 y la longitud corta del hash son prácticas. Para todo lo demás, SHA-256 es la elección segura por defecto. Está soportado en todas partes, comprobadamente seguro y lo suficientemente eficiente para cualquier aplicación.
Probar la Herramienta
Generador de Hash