Saltar al contenido
uencoder

Cómo a Usar HMAC para Authentication

Generar and verify HMAC signatures to authenticate messages and API requests.

问题

You necesitar a prove ese un mensaje o API petición was sent por someone who knows un shared secret clave, y ese it was no modified en transit.

Requisitos previos

  • Understanding of hash functions
  • Knowledge of shared secret keys

Pasos

  1. 1. Prepare the message and key

    Define the message to authenticate (e.g., an API request body or a timestamp + payload). Agree on a secret key with the other party. The key should be at least as long as the hash output (32 bytes for HMAC-SHA256).

    entrada
    message: 'payload' | key: 'secret'
    输出
    ready to sign
  2. 2. Compute the HMAC

    Run HMAC-SHA256 with the key and message. HMAC wraps the hash function with key mixing, producing a tag that only someone with the key can compute. The tag is typically sent as a hex or Base64 string alongside the message.

    entrada
    HMAC-SHA256(key, message)
    输出
    tag: a1b2c3...
  3. 3. Verify on the receiving end

    The recipient recomputes the HMAC with the same key and message and compares it to the received tag using a constant-time comparison. If they match, the message is authentic and unmodified. If they differ, reject the message.

    entrada
    recomputed tag == received tag
    输出
    verified ✓

Resultado esperado

Un HMAC etiqueta ese authenticates el mensaje source y integrity, verifiable por anyone con el shared clave.

Errores comunes

Comparing tags with a non-constant-time comparison
Use a constant-time comparison (e.g., crypto.timingSafeEqual) to prevent timing attacks that leak the tag byte by byte.
Including the key in the message
The key is never sent. Only the message and the HMAC tag are transmitted. The key stays on both sides.

Solución de problemas指引

  • If verification fails, check that the message is byte-identical on both sides (no encoding differences).
  • Include a timestamp or nonce in the message to prevent replay attacks.

Límites de seguridad

  • HMAC security depends on the secrecy of the key and the collision resistance of the underlying hash. Use SHA-256 or stronger.
  • All computation is local.

Herramientas relacionadas

Términos relacionados

参考链接