¿Odias los anuncios? Ir Sin publicidad Hoy

MD5, SHA-256, SHA-3 ¿Qué algoritmo de hash realmente necesitas?

Publicado el

Una comparación directa de MD5, SHA-1, SHA-256, SHA-3 y BLAKE3 — cuándo es adecuado cada algoritmo, en qué fallan y cuál usar por defecto.

MD5, SHA-256, SHA-3: ¿Qué algoritmo de hash realmente necesitas? 1
ANUNCIO · ¿ELIMINAR?

Si aún estás buscando MD5 por defecto, estás en buena compañía — y probablemente estás haciendo una mala elección. Todos los algoritmos de hash producen una huella fija de longitud determinada de tus datos, pero no son intercambiables. Elegir el mal uno es ya sea un exceso paranoico o un fallo real de seguridad, dependiendo de la dirección en la que te equivocas.

Aquí te explico lo que hace cada algoritmo, dónde falla y qué deberías usar en su lugar.

¿Qué hace un algoritmo de hash?

Una función de hash criptográfica toma una entrada de cualquier tamaño y devuelve una salida de longitud fija — determinista, irreversible y (idealmente) resistente a colisiones. La misma entrada siempre produce el mismo hash. No puedes revertirlo. Y cambiar incluso un solo byte en la entrada cambia completamente la salida.

Esas tres propiedades hacen que los algoritmos de hash sean útiles para verificar la integridad de los datos, firmar documentos y crear checksums. Los algoritmos que siguen a continuación hacen esto. Lo que los separa es cuán bien resisten los ataques y cuán rápido se ejecutan.

MD5: Deja de usarlo para seguridad

MD5 produce un hash de 128 bits y es rápido — exactamente el problema. Fue diseñado en 1991, y en 2004 los investigadores demostraron ataques de colisión. Hoy en día, generar dos archivos diferentes que produzcan el mismo hash MD5 es computacionalmente trivial.

Dónde falla: Cualquier contexto de seguridad — verificación de integridad de archivos por canales no confiables, firmas digitales, certificados TLS.

Dónde sigue siendo adecuado: Checksums no de seguridad. Deduplicación de archivos, generación de claves de caché, huellas de contenido dentro de un sistema que controlas — MD5 es rápido y suficiente. Las colisiones solo importan si un atacante puede explotarlas.

¿Necesitas generar un hash MD5 rápidamente? Usa el Generador de MD5.

SHA-1: Obsoleto, aún presente

SHA-1 produce una salida de 160 bits y tiene el mismo problema fundamental: los ataques de colisión están probados. El ataque SHAttered de Google en 2017 produjo dos archivos PDF diferentes con hashes SHA-1 idénticos, a un costo que ahora es prácticamente accesible para atacantes motivados.

Está oficialmente obsoleto para firmas digitales y certificados TLS. Aún lo encontrarás en Git, donde se utiliza como identificador de contenido — el modelo de amenaza allí es diferente, y Git está migrando activamente a SHA-256.

La regla: No uses SHA-1 para nuevos trabajos de seguridad. Marca su uso para migración en sistemas legados.

SHA-256 y SHA-512: El estándar actual

SHA-256 (parte de la familia SHA-2) es lo que deberías usar por defecto en la mayoría de las aplicaciones criptográficas. Salida de 256 bits, sin ataques prácticos conocidos, y está soportado en todos los lenguajes y plataformas que probablemente uses.

SHA-512 utiliza un estado interno de 512 bits y produce una salida de 512 bits. En CPUs de 64 bits, es a menudo más rápido que SHA-256 para entradas grandes debido a la forma en que procesa bloques. Para la mayoría de los trabajos en capa de aplicación, SHA-256 es suficiente. Si estás procesando grandes volúmenes de datos o necesitas un margen adicional en la derivación de claves, prueba SHA-512.

Cuándo usar: Verificación de integridad de archivos, HMACs, firmas de certificados (con RSA/ECDSA), firmas de solicitudes de API, tokens JWT.

SHA-3: Arquitectura diferente, casos de uso especializados

SHA-3 (Keccak) fue seleccionado por NIST en 2015 específicamente como una alternativa estructural a SHA-2. Mientras que SHA-2 utiliza la construcción Merkle-Damgård, SHA-3 utiliza una construcción de espuma. Si alguna debilidad fundamental fuera descubierta en el diseño de SHA-2, SHA-3 sería inmune.

Produce tamaños de salida iguales (SHA3-256, SHA3-512, etc.) y pasa todas las pruebas actuales de seguridad, pero generalmente es más lento que SHA-256 en software puro.

Cuándo usar: Sistemas de larga duración donde la independencia arquitectural de SHA-2 importa — módulos de seguridad hardware, ciertos contextos gubernamentales o de cumplimiento, o cualquier lugar en el que estés explicitamente protegiéndote contra futuras debilidades de SHA-2. Para la mayoría de las aplicaciones web, esto es un exceso teórico.

BLAKE3: La elección moderna de rendimiento

BLAKE3 no es un estándar de NIST (todavía), pero tiene una amplia adopción: el lenguaje Rust, cargoel formato de hash streaming Bao y una creciente lista de herramientas de seguridad y almacenamiento que lo utilizan. Diseñado para la paralelización, se ejecuta significativamente más rápido que SHA-256 en software mientras resiste las pruebas criptográficas actuales.

Cuándo usar: Checksums de alto rendimiento, direccionamiento de contenido, cualquier lugar en el que controlas ambos extremos y necesitas velocidad sin sacrificar la seguridad. Evítalo en lugares donde SHA-2 esté explícitamente requerido por el estándar — certificados X.509, tokens JWT y contextos similares.

Comparación de algoritmos de hash

Algoritmo Estado de seguridad Tamaño de salida Velocidad (software) Uso recomendado
MD5 Rompido (colisiones) 128 bits Muy rápido Checksums no de seguridad, deduplicación
SHA-1 Rompido (colisiones) 160-bit Rápido Solo para sistemas legados; identificadores de contenido en Git
SHA-256 Seguro 256 bits Rápido Uso general — elección por defecto
SHA-512 Seguro 512-bit Más rápido en 64 bits para grandes volúmenes de datos Trabajo de alto rendimiento o margen adicional
SHA-3 Seguro 224–512-bit Más lento en software Sistemas de larga duración que necesitan independencia de SHA-2
BLAKE3 Seguro 256 bits Muy rápido (paralelo) Direccionamiento de contenido de alto rendimiento

Cálculo de SHA-256

Tres formas rápidas de calcular un hash SHA-256:

Python:

import hashlib

data = b"hello world"
digest = hashlib.sha256(data).hexdigest()
print(digest)
# Output: b94d27b9934d3e08a52e52d7da7dabfac484efe04294e576fba1d63e8d4d0b4b

Node.js:

const { createHash } = require('crypto');

const digest = createHash('sha256')
  .update('hello world')
  .digest('hex');
console.log(digest);

Bash:

echo -n "hello world" | sha256sum

¿Necesitas hashear algo rápidamente sin escribir código? El Generador de hash soporta MD5, SHA-1, SHA-256, SHA-512 y más — directamente desde tu navegador.

Guía de decisión

Uso recomendado ¿Qué usar?
Deduplicación / claves de caché MD5 o SHA-256
Integridad de archivos (canal confiable) MD5 es suficiente
Integridad de archivos (descargas, no confiable) SHA-256
Firmas digitales SHA-256 o SHA-512
HMACs y autenticación de API SHA-256
Certificados TLS SHA-256
Almacenamiento de contraseñas bcrypt, Argon2 o scrypt — no ninguno de los anteriores
Direccionamiento de contenido de alto rendimiento BLAKE3
Cumplimiento de estándares SHA-256 (verifique los requisitos del estándar)

Un punto importante que se debe hacer explícito: ninguno de estos algoritmos debería usarse directamente para hashear contraseñas. Todos son rápidos por diseño, lo que los hace útiles para ataques de fuerza bruta. Usa bcrypt, Argon2id o scrypt — algoritmos diseñados para ser deliberadamente lentos y de alto consumo de memoria, exactamente porque el ataque de contraseñas es un juego adversarial.

La respuesta breve

Para nuevos códigos: SHA-256 por defecto. Usa SHA-512 si necesitas un tamaño de salida mayor o estás hasheando grandes flujos en hardware de 64 bits. Usa BLAKE3 cuando necesitas un rendimiento máximo y controlas ambos extremos. Usa SHA-3 solo si tienes una razón específica de arquitectura para mantener independencia de SHA-2.

MD5 es adecuado para huellas internas y deduplicación donde las colisiones no representan un problema de seguridad. No es adecuado para cualquier uso en el que un atacante pueda beneficiarse de forjar una coincidencia.

Cuando estés en duda, SHA-256. Ha sido la respuesta correcta durante una década y seguirá siendo así por el futuro inmediato.

¿Quieres eliminar publicidad? Adiós publicidad hoy

Instalar extensiones

Agregue herramientas IO a su navegador favorito para obtener acceso instantáneo y búsquedas más rápidas

añadir Extensión de Chrome añadir Extensión de borde añadir Extensión de Firefox añadir Extensión de Opera

¡El marcador ha llegado!

Marcador es una forma divertida de llevar un registro de tus juegos, todos los datos se almacenan en tu navegador. ¡Próximamente habrá más funciones!

ANUNCIO · ¿ELIMINAR?
ANUNCIO · ¿ELIMINAR?
ANUNCIO · ¿ELIMINAR?

Noticias Aspectos técnicos clave

Involucrarse

Ayúdanos a seguir brindando valiosas herramientas gratuitas

Invítame a un café
ANUNCIO · ¿ELIMINAR?