Codificar, cifrar y hashear son tres transformaciones de datos que se confunden con frecuencia, pero tienen propósitos completamente distintos. Confundirlas lleva a errores de seguridad graves (como creer que algo "codificado" está protegido).
La diferencia clave está en si son reversibles y si protegen la información.
Codificar (encoding)
Transforma datos a otro formato para su transporte o almacenamiento, no para protegerlos.
- Reversible sin clave: cualquiera puede decodificar.
- Ejemplos: Base64, URL encoding, ASCII.
- ⚠️ No es seguridad. Algo codificado se considera público.
Cifrar (encryption)
Transforma datos en ilegibles usando una clave secreta; solo quien tenga la clave correcta puede revertirlo.
- Reversible únicamente con la clave.
- Protege la confidencialidad.
- Ejemplos: AES, RSA. Usos: HTTPS, mensajería, cifrado de disco.
Hashear (hashing)
Genera una huella digital de longitud fija a partir de un dato. Es de un solo sentido: no se puede revertir.
- Irreversible: del hash no se obtiene el original.
- Mismo dato → mismo hash; un cambio mínimo → hash totalmente distinto.
- Ejemplos: SHA-256, bcrypt. Usos: integridad y almacenamiento de contraseñas.
Comparación:
| Codificar | Cifrar | Hashear | |
|---|---|---|---|
| ¿Reversible? | Sí, sin clave | Sí, con clave | No |
| ¿Usa clave? | No | Sí | No (puede usar salt) |
| ¿Protege datos? | No | Sí | Verifica/identifica |
| Ejemplo | Base64 | AES, RSA | SHA-256, bcrypt |
Esta distinción es la base de todo el pilar de Criptografía: a partir de aquí se ven el cifrado simétrico y asimétrico, el hashing de contraseñas y la integridad.