Qué es una función hash y para qué se usa
Las huellas digitales de los datos: cómo funcionan, dónde las usas sin saberlo y qué algoritmo elegir.
This guide is currently available in Spanish only. Your browser can translate it automatically.
Una huella digital para los datos
Una función hash toma cualquier dato (una palabra, un documento, un archivo de varios gigas) y produce una cadena de longitud fija llamada hash, resumen o huella. Por ejemplo, el SHA-256 de cualquier cosa siempre tiene 256 bits, que se suelen mostrar como 64 caracteres hexadecimales.
Igual que una huella dactilar identifica a una persona sin contener toda su información, un hash identifica unos datos sin contenerlos.
Las propiedades que la hacen útil
- Determinista: el mismo dato produce siempre el mismo hash.
- Un solo sentido: a partir del hash no se puede reconstruir el dato original.
- Efecto avalancha: un cambio mínimo en la entrada cambia por completo el resultado. El SHA-256 de «hola» empieza por
b221d9db…y el de «Hola» pore633f4fc…; no se parecen en nada. - Resistencia a colisiones: debe ser prácticamente imposible encontrar dos entradas distintas con el mismo hash.
Como hay infinitas entradas posibles y un número limitado de hashes, las colisiones existen en teoría; lo importante es que sea inviable encontrarlas a propósito.
Dónde se usan
Verificar descargas
Muchas webs publican el SHA-256 de sus archivos. Si calculas el hash del archivo descargado y coincide con el publicado, sabes que no se ha corrompido ni ha sido modificado por el camino.
Guardar contraseñas
Un servicio bien hecho no guarda tu contraseña, sino un hash de ella. Cuando inicias sesión, calcula el hash de lo que escribes y lo compara con el guardado. Así, si roban la base de datos, no obtienen las contraseñas directamente. Para esto se usan algoritmos lentos a propósito (bcrypt, scrypt o Argon2) combinados con una «sal» aleatoria distinta para cada usuario, porque los hashes rápidos como SHA-256 permiten probar miles de millones de contraseñas por segundo.
Control de versiones y blockchain
Git identifica cada versión de un proyecto por su hash. Las cadenas de bloques como Bitcoin enlazan cada bloque con el hash del anterior, de forma que modificar un bloque antiguo rompería todos los siguientes.
Firmas digitales
En lugar de firmar un documento entero, se firma su hash. Es mucho más rápido y cualquier cambio en el documento invalidaría la firma.
Qué algoritmo elegir
| Algoritmo | Tamaño | Estado |
|---|---|---|
| MD5 | 128 bits | Roto: se pueden generar colisiones. Solo para comprobar errores accidentales. |
| SHA-1 | 160 bits | Roto desde 2017 (se publicó una colisión real). Evitar en usos de seguridad. |
| SHA-256 | 256 bits | Seguro y el más usado hoy. |
| SHA-384 / SHA-512 | 384 / 512 bits | Seguros; útiles cuando se quiere más margen. |
Hash, cifrado y codificación: no son lo mismo
- Un hash es de un solo sentido: no se puede «deshacer».
- Un cifrado es reversible, pero solo con la clave correcta.
- Una codificación como Base64 es reversible por cualquiera, sin clave.
Confundirlos es una fuente habitual de fallos de seguridad, así que conviene tener clara la diferencia.