Qué es un hash y para qué sirve

Una función hash transforma datos de cualquier longitud en una huella de longitud fija: 128 bits para MD5, 256 para SHA-256. Basta cambiar una sola letra para que la huella cambie por completo, y es imposible volver a los datos a partir de la huella.

Por eso los hashes sirven para comprobar que una descarga está íntegra, para identificar datos sin guardarlos, para firmar documentos y, con algoritmos lentos y sal, para almacenar contraseñas. Git identifica cada versión con un SHA-1; Bitcoin se basa en SHA-256.

MD5 y SHA-1 ya no son seguros: se pueden construir a propósito dos archivos distintos con la misma huella. Siguen siendo útiles contra errores de transmisión, pero la seguridad requiere SHA-256 o superior.

Errores frecuentes

  • Comparar un hash calculado sobre un texto con un salto de línea o un espacio de más: un carácter invisible lo cambia todo.
  • Guardar contraseñas con MD5 o SHA-256 a secas: son demasiado rápidos de probar en masa. Hacen falta algoritmos lentos como bcrypt o Argon2.
  • Pensar que un hash se puede descifrar: no es un cifrado. Las webs que lo 'invierten' solo lo buscan en tablas de hashes ya calculados.

Preguntas frecuentes

¿Puedo obtener el texto a partir del hash?

No. Una buena función hash no se invierte; solo se puede adivinar el texto y comparar. Por eso las contraseñas cortas o comunes se encuentran igualmente.

¿Cómo compruebo un archivo descargado?

Calcula el hash del archivo con una herramienta del sistema (sha256sum en Linux, Get-FileHash en Windows) y compáralo con el publicado. Si difiere un solo carácter, el archivo es distinto.

¿Por qué el mismo texto da hashes distintos en programas distintos?

Normalmente por la codificación o los finales de línea: un texto guardado con CRLF o en Latin-1 tiene bytes distintos del mismo texto en UTF-8 con LF, y por tanto otro hash.

Cómo funciona este cálculo

El texto se convierte primero en bytes con UTF-8. SHA-1, SHA-256, SHA-384 y SHA-512 se calculan con la API Web Crypto del navegador, según FIPS 180-4. MD5 sigue la RFC 1321: los datos se completan hasta un múltiplo de 512 bits con su longitud y cada bloque pasa por 64 pasos de sumas, rotaciones y funciones lógicas sobre cuatro palabras de 32 bits.