Algoritmos de hash explicados: MD5, SHA-1, SHA-256, SHA-512
Respuesta rápida
MD5 y SHA-1 no funcionan y no deben utilizarse con fines sensibles a la seguridad. SHA-256 es el valor predeterminado actual para comprobaciones de integridad, firmas y blockchain. SHA-512 es más rápido en CPU de 64 bits y se utiliza cuando se desean resúmenes más largos. Utilice nuestro Generador Hash para calcular cualquiera de estos en su navegador; utilice File Hash para verificar la integridad del archivo.
Introducción
Una función hash criptográfica toma una entrada de tamaño arbitrario y produce un resumen de tamaño fijo que es determinista, rápido de calcular, inviable de invertir, resistente a colisiones y sensible a avalanchas (un cambio de un bit altera aproximadamente la mitad de los bits de salida). MD5 (128 bits), SHA-1 (160 bits), SHA-256 (256 bits) y SHA-512 (512 bits) son las cuatro funciones hash más comunes, pero sus propiedades de seguridad difieren dramáticamente.
Paso a paso
-
Comprender las propiedades de una función hash
Un buen hash criptográfico es determinista (la misma entrada siempre produce la misma salida), salida de tamaño fijo, rápido de calcular, inviable de revertir (resistencia previa a la imagen), inviable de encontrar dos entradas con la misma salida (resistencia a la colisión) y avalanchas (un pequeño cambio de entrada invierte ~50% de los bits de salida).
-
Conozca los tamaños de resumen
MD5 produce 128 bits (32 caracteres hexadecimales). SHA-1 produce 160 bits (40 caracteres hexadecimales). SHA-256 produce 256 bits (64 caracteres hexadecimales). SHA-512 produce 512 bits (128 caracteres hexadecimales). Los resúmenes más largos reducen la probabilidad de colisión pero aumentan el tamaño del almacenamiento.
-
Descubra por qué MD5 y SHA-1 no funcionan
Los investigadores encontraron ataques de colisión prácticos contra MD5 (2004) y SHA-1 (2017, ataque SHAttered). Las colisiones permiten a un atacante crear dos entradas diferentes con el mismo hash, rompiendo firmas digitales y autoridades de certificación. Ninguno de los dos debe utilizarse por motivos de seguridad.
-
Elija el algoritmo correcto
Para comprobaciones de integridad de archivos donde la velocidad importa más que la seguridad, MD5 o SHA-1 siguen siendo comunes. Para cualquier uso sensible a la seguridad (contraseñas, firmas, certificados, blockchain), utilice SHA-256 o SHA-512. Para el almacenamiento de contraseñas, utilice un KDF lento como bcrypt, scrypt o Argon2, nunca SHA-256 sin formato.
-
Calcular y verificar hashes
Utilice Hash Generator para codificar texto con cualquier algoritmo, o File Hash para calcular el hash de un archivo local. Compare el resumen resultante con un valor conocido para verificar la integridad; una diferencia de un solo bit significa que el archivo estaba dañado o manipulado.
Ejemplos
MD5 de 'hola' (128 bits, 32 caracteres hexadecimales)
Aporte: hello
Producción: 5d41402abc4b2a76b9719d911017c592
SHA-256 de 'hola' (256 bits, 64 caracteres hexadecimales)
Aporte: hello
Producción: 2cf24dba5fb0d30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
Efecto avalancha: un cambio de carácter
Aporte: hola vs hola
Producción: SHA-256('hello') inicia 2cf24dba... mientras que SHA-256('Hello') inicia 185f8db3... —completamente diferente a pesar del cambio de entrada de un bit
Problemas comunes
- Usar MD5 o SHA-1 para el hash de contraseñas: ambos son rápidos y no funcionan, lo que hace que los ataques de fuerza bruta y de tabla arcoíris sean triviales. Utilice bcrypt, scrypt o Argon2 en su lugar.
- Confundir hash con cifrado: el hashing es unidireccional e irreversible; El cifrado es bidireccional. No se puede "descifrar" un hash; sólo se pueden comparar hashes.
- Ignorar los ataques de extensión de longitud: MD5, SHA-1, SHA-256 y SHA-512 son todos vulnerables a los ataques de extensión de longitud cuando se usan como MAC. Utilice HMAC-SHA256 para la autenticación de mensajes.
- Comparar hashes con == en lugar de una comparación de tiempo constante: las fugas de tiempo permiten a los atacantes recuperar hashes byte a byte. Utilice una comparación de tiempo constante en el código de seguridad.
Consejos
- El valor predeterminado es SHA-256 para sistemas nuevos: es rápido, tiene un amplio soporte y no tiene ningún ataque de colisión práctico a partir de 2026.
- Para el almacenamiento de contraseñas, utilice bcrypt con un factor de trabajo de 12+ (o Argon2id con 64 MB de memoria), nunca SHA-256 sin formato, que es demasiado rápido frente a las GPU.
- Al verificar las descargas de archivos, compare tanto el nombre del algoritmo como el resumen: un hash SHA-1 no tiene sentido si el editor solo pretendía SHA-256.
- Utilice nuestra herramienta File Hash para calcular SHA-256 de archivos grandes localmente sin cargarlos; transmite el archivo a través de Web Crypto API.