Toolyard

Qué es un hash: MD5, SHA-1 y SHA-256 explicados

Una huella digital para los datos

Una función hash toma cualquier entrada (una palabra, un documento, un vídeo de 4 GB) y la convierte en una cadena corta de longitud fija llamada hash, resumen o checksum. La misma entrada siempre da el mismo hash, y el menor cambio da uno completamente distinto:

EntradaHash SHA-256
hello2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
Hello185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969
hello!ce06092fb948d9ffac7d1a376e404b26b7575bcc11ee05a4615fef4fec3a308b

Una mayúscula o un signo de exclamación cambian todos los caracteres del resultado. Pruébalo en el Generador de hash.

Qué hace buena a una función hash

  • Determinista: la misma entrada produce siempre el mismo hash, en cualquier ordenador.
  • De un solo sentido: no se puede volver del hash a la entrada.
  • Resistente a colisiones: debe ser prácticamente imposible encontrar dos entradas distintas con el mismo hash.
  • Rápida de calcular para sumas de comprobación, algo útil, y también la razón por la que los hashes rápidos no sirven para contraseñas (más abajo).

Un hash no es cifrado

El cifrado funciona en los dos sentidos: con la clave recuperas el original. Un hash no tiene clave y no se puede revertir; solo permite comprobar si algo coincide. Base64 es otra cosa: es solo una codificación y cualquiera puede decodificarla.

Los algoritmos más comunes

AlgoritmoLongitudEstado
MD5128 bits (32 caracteres hexadecimales)Roto desde 2004; solo sirve para detectar daños accidentales
SHA-1160 bits (40 caracteres hexadecimales)Roto: la primera colisión real se publicó en 2017
SHA-256256 bits (64 caracteres hexadecimales)Seguro; la opción estándar hoy
SHA-512512 bits (128 caracteres hexadecimales)Seguro; a menudo más rápido que SHA-256 en ordenadores de 64 bits

Así queda la palabra hello en cada uno:

  • MD5: 5d41402abc4b2a76b9719d911017c592
  • SHA-1: aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d
  • SHA-256: 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

Qué significa que MD5 y SHA-1 estén "rotos"

Con MD5 y SHA-1, los investigadores pueden crear a propósito dos archivos distintos con el mismo hash. Un atacante podría usarlo para cambiar un archivo inofensivo por uno malicioso con la misma suma, o para falsificar un documento firmado. Ninguno de los dos está roto en el sentido de poder revertirse, y un daño aleatorio sigue cambiando el hash, así que una suma MD5 todavía detecta una descarga que se cortó a medias. Lo que no puede es demostrar que nadie ha manipulado el archivo.

SHA-256 y SHA-512 pertenecen a la familia SHA-2, publicada en 2001, y no se conoce ningún ataque práctico contra ellos. SHA-3, estandarizado en 2015, es un diseño distinto que se mantiene como reserva.

Para qué se usan los hashes

  • Comprobar descargas: los desarrolladores publican el SHA-256 de sus archivos; si el tuyo coincide, es idéntico. Consulta cómo verificar una suma de comprobación.
  • Firmas digitales y certificados HTTPS: se calcula el hash del documento o del certificado y se firma ese hash.
  • Git: cada commit y cada archivo se identifica por su hash. Git ha usado SHA-1 desde siempre y ha añadido soporte para SHA-256.
  • Bitcoin y otras blockchains: los bloques se encadenan con SHA-256.
  • Encontrar archivos duplicados: dos archivos con el mismo SHA-256 son el mismo archivo.

Hashes y contraseñas

Las webs nunca deberían guardar tu contraseña, solo un hash de ella; al iniciar sesión, calculan el hash de lo que escribes y lo comparan. Pero SHA-256 no es la herramienta adecuada para esto: es tan rápido que un atacante con una base de datos filtrada puede probar miles de millones de contraseñas por segundo. Las contraseñas necesitan un hash lento y con sal pensado para ello, como bcrypt, scrypt o Argon2. La sal es un valor aleatorio que se añade a cada contraseña antes de calcular el hash, para que dos personas con la misma contraseña obtengan hashes distintos.

Pruébalo

El Generador de hash calcula a la vez MD5, SHA-1, SHA-256, SHA-384 y SHA-512 de cualquier texto o archivo, en tu navegador, y puede compararlos con una suma publicada.

Herramientas de esta guía

Más guías

Cómo abrir archivos HEIC en WindowsCómo reducir el tamaño de un PDFCómo quitar la ubicación de las fotosCómo extraer el audio de un vídeoCómo crear un código QR para tu Wi-FiCómo firmar un PDFCómo verificar la suma de comprobación de un archivo (SHA-256)PNG, JPG o WebP: qué formato de imagen usarCómo unir archivos PDFCómo copiar el texto de una imagenCómo convertir JPG a PDFCómo convertir un PDF a JPGCómo dividir un PDF o extraer páginasCómo girar un PDF de forma permanenteCómo añadir números de página a un PDFCómo poner una marca de agua en un PDFCómo convertir HEIC a JPG en MacCómo convertir WebP a JPGCómo reducir el tamaño de una imagenCómo convertir un vídeo a GIFCómo convertir WAV a MP3Cómo crear una contraseña seguraCómo convertir Celsius a FahrenheitGB o GiB: por qué tu disco muestra menos espacioCómo calcular porcentajesCómo calcular los días entre dos fechasQué es un timestamp UnixCómo comparar dos archivos de textoCómo contar las palabras de un documentoCómo leer un código QR desde una captura o una imagenCómo comprimir una foto a 20 KB (o a cualquier tamaño)Cómo quitar el fondo de una fotoCómo probar tu micrófonoCómo buscar píxeles muertos en una pantallaCómo grabar la pantallaCómo crear un tono de llamada para iPhoneCómo comprimir un vídeo para enviarloCómo quitar la contraseña de un PDFCómo poner contraseña a un PDFCómo rellenar un formulario PDFCómo convertir un PDF a WordCómo difuminar una cara en una fotoCómo calcular tu IMCCómo calcular la cuota de una hipotecaCómo organizar una reunión con varias zonas horarias¿Qué es una expresión cron?Cómo obtener la complementaria inversa de una secuencia de ADNCómo traducir ADN a proteínaCómo convertir GenBank a FASTACómo encontrar sitios de restricción en una secuencia de ADNCómo alinear dos secuencias de ADN o de proteínaCómo diseñar y comprobar cebadores de PCRCómo calcular la masa molarCómo ajustar una ecuación químicaCómo preparar una disolución de una molaridad dadaCómo calcular una dilución (C1V1 = C2V2)Cómo calcular el pHCómo calcular la concentración de ADN a partir de la A260Cómo calcular la cantidad de inserto para una ligaciónCómo pasar de RPM a g (RCF)Cómo contar células con un hemocitómetroCómo usar un cuadro de PunnettCómo hacer un presupuesto con la regla 50/30/20Bola de nieve o avalancha para pagar deudas¿Cuánto necesito para jubilarme?Cómo pasar el sueldo anual a precio por horaMargen de beneficio o recargoCómo calcular el IVA y el impuesto sobre ventasCómo hacer una factura¿Cuánta casa me puedo permitir?Cómo leer el código de colores de las resistenciasCómo elegir la resistencia de un LEDCómo calcular la caída de tensión en un cable¿Cuánto hormigón necesito?¿Cuánta pintura necesito?Cómo calcular una subredReglas de las cifras significativas