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.

AspectoHashHMAC
Usa clave secretaNo
Garantiza integridad
Garantiza autenticidadNo
Caso típicoChecksum, dedupFirmar webhooks/APIs
Reproducible sin secretoNo

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.

Herramientas para esto