Recientemente estuve estudiando sobre el Código de autenticación de mensajes (MAC) y el Código de autenticación de mensajes basado en hash (HMAC).
Lo que entendí es que MAC toma el mensaje y una clave secreta compartida y aplica el algoritmo MAC y la salida se adjunta con el mensaje original y se envía al servidor y el servidor utiliza la misma clave, el mensaje y aplica el algoritmo MAC y empareja la salida del algoritmo con la que se adjunta al paquete recibido. Si ambos coinciden, los datos no se alteran y provienen de una buena fuente.
Mientras se encuentra en el HMAC, el mensaje se revisa con algoritmos MD5 o SHA y la salida del hash se anexa con la clave compartida y nuevamente se anula y esta salida se anexa con el mensaje y se envía al servidor y el servidor también usa los mismos métodos para ver si el mensaje está manipulado o no.
Pero, ¿cómo es mejor HMAC que MAC? Solo incluye otra ronda de hash.