¿En qué se diferencia el hashing del cifrado, y cuándo usarías uno en lugar del otro?
Respuesta breve
El cifrado es reversible: con la clave recuperas el texto plano; protege la confidencialidad. El hashing es una función unidireccional que produce un resumen de tamaño fijo que no se puede revertir; verifica integridad e identidad. Las contraseñas deben hashearse con un algoritmo lento y salado como bcrypt o Argon2, nunca cifrarse.
Estos dos conceptos se confunden constantemente, pero resuelven problemas distintos y se comportan de maneras opuestas.
El cifrado es reversible
El cifrado transforma texto plano en texto cifrado usando una clave, y, fundamentalmente, esa transformación es reversible: cualquiera con la clave correcta puede recuperar los datos originales. Su función es la confidencialidad: mantener los datos en secreto frente a quienes carecen de la clave. Si alguna vez necesitas recuperar el valor original, lo que quieres es cifrado.
El hashing es unidireccional
Una función hash criptográfica toma una entrada de cualquier tamaño y produce un resumen de tamaño fijo. Es deliberadamente unidireccional: no hay clave, y no puedes revertir de forma viable el resumen para recuperar la entrada. Las buenas funciones hash también son resistentes a colisiones (es difícil encontrar dos entradas con el mismo resumen) y exhiben el efecto avalancha (un cambio de un solo bit altera por completo la salida).
El hashing responde preguntas como «¿este archivo está inalterado?» o «¿coincide esta contraseña?» sin almacenar ni revelar jamás los datos originales.
Por qué las contraseñas se hashean, no se cifran
Si cifraras las contraseñas, cualquiera que robase la clave podría descifrarlas todas de una vez. El hashing hace que ni siquiera el operador de la base de datos pueda recuperarlas. Pero hay que hacerlo bien:
- Sala cada contraseña con un valor aleatorio único para que contraseñas idénticas produzcan resúmenes distintos y las tablas rainbow precalculadas resulten inútiles.
- Usa un algoritmo lento, con factor de trabajo — bcrypt, scrypt o Argon2 — y no un hash rápido de uso general como SHA-256. La lentitud es una característica: frena los intentos de fuerza bruta.
Qué buscan los entrevistadores
La prueba central es «reversible vs unidireccional» y asociar cada uno a confidencialidad vs integridad. La respuesta que suena senior añade que las contraseñas necesitan salado y un algoritmo deliberadamente lento, no un simple SHA-256.
Posibles preguntas de seguimiento
- ¿Por qué salamos los resúmenes de contraseñas?
- ¿Por qué un hash rápido como SHA-256 es una mala elección para almacenar contraseñas?
- ¿Qué es una colisión y por qué importa?