Cifrado, hashing y HMAC utilizan funciones criptográficas, pero resuelven problemas diferentes. La primera pregunta es: ¿qué necesitas proteger o verificar?
- usa cifrado cuando la información deba permanecer secreta y recuperarse después;
- usa hashing para crear una huella reproducible;
- usa HMAC para autenticar un mensaje con un secreto compartido;
- usa una función de derivación como PBKDF2 para derivar un valor desde una contraseña.
El cifrado protege la confidencialidad
El cifrado transforma datos legibles en texto cifrado mediante una clave. Con la clave y los parámetros correctos, la operación puede revertirse.
AES es un algoritmo de cifrado simétrico. La herramienta AES permite explorar este modelo.
El cifrado es adecuado cuando se necesita recuperar el valor original. Un hash no lo sustituye porque no está diseñado para descifrarse.
El hashing crea una huella
Una función hash transforma una entrada en un resumen de tamaño fijo. La misma entrada con el mismo algoritmo produce el mismo resultado.
El generador de hash y la herramienta de comparación cubren estos usos.
Un hash por sí solo no demuestra que el resumen proceda de una parte autorizada. Quien pueda sustituir los datos y el hash puede recalcular ambos.
HMAC combina hash y secreto
HMAC utiliza una función hash junto con una clave secreta. Las partes que comparten ese secreto pueden calcular y verificar un código de autenticación.
El generador y verificador HMAC muestra la diferencia.
HMAC no oculta el mensaje. Protege integridad y autenticidad, no confidencialidad.
PBKDF2 es más que un hash simple de contraseña
Las funciones hash generales son deliberadamente rápidas, lo que facilita intentos masivos de contraseñas.
PBKDF2 aplica repetidamente una función pseudoaleatoria con una sal y un número de iteraciones. La herramienta PBKDF2 muestra el papel de contraseña, sal, iteraciones y longitud de salida.
La sal no es una contraseña adicional y puede almacenarse junto al valor derivado.
¿Qué mecanismo utilizar?
| Necesidad |
Mecanismo |
¿Reversible? |
¿Secreto necesario? |
| Ocultar datos y recuperarlos después |
AES |
Sí |
Sí |
| Crear una huella |
Hash |
No |
No |
| Autenticar un mensaje con secreto compartido |
HMAC |
No |
Sí |
| Derivar un valor de una contraseña |
PBKDF2 |
No |
Contraseña |
Los mecanismos pueden coexistir en un mismo sistema.
Errores comunes
Codificar no es cifrar. Base64 no aporta confidencialidad.
Hashing no es cifrado. Un hash no es texto cifrado.
HMAC no oculta el mensaje. Lo autentica mediante un secreto.
Las contraseñas normalmente no deberían almacenarse como datos descifrables.
Para un contexto más amplio, consulta Seguridad web: protecciones esenciales.