Hash vs HMAC
Un hash (SHA-256, MD5) convierte cualquier dato en una huella de tamaño fijo: sirve para verificar integridad, pero cualquiera puede recalcularlo. Un HMAC es un hash con una clave secreta: además de integridad, prueba autenticidad —que el mensaje lo generó alguien que conoce la clave—. La diferencia es la clave.
| Aspecto | Hash | HMAC |
|---|---|---|
| Usa clave secreta | No | Sí |
| Garantiza integridad | Sí | Sí |
| Garantiza autenticidad | No | Sí |
| Caso típico | Checksum, dedup | Firmar webhooks/APIs |
| Reproducible sin secreto | Sí | No |
Cuándo usar Hash
Usá un hash simple para checksums, deduplicar archivos, indexar o comparar contenido. Nunca para guardar contraseñas tal cual (para eso va bcrypt/Argon2 con salt).
Cuándo usar HMAC
Usá HMAC para firmar webhooks, tokens y APIs: quien recibe recalcula el HMAC con la clave compartida y confirma que el mensaje no se alteró ni lo falsificó un tercero.
En resumen: Hash = integridad pública. HMAC = integridad + autenticidad con secreto compartido. Si necesitás demostrar "esto lo mandé yo y no lo tocaron", es HMAC.