Skip to content

HMAC vs Plain Hash

Keyed message authentication versus a bare digest—compare webhook verification, tamper detection, and key handling.

Overview

A plain digest tells you whether bytes changed; an HMAC tells you whether someone with the secret produced them. That distinction is the whole reason webhook providers sign payloads with HMAC instead of shipping a SHA-256 checksum—an attacker can recompute a public hash for modified data, but cannot produce a valid HMAC without the key.

Pros

  • Proves the sender knows a shared secret
  • Standard for webhook signature headers
  • Resists length-extension attacks by design

Cons

  • Both sides must manage the shared key
  • Rotation needs a documented overlap window

Pros

  • No key to distribute or rotate
  • Ideal for checksums and cache keys
  • Anyone can recompute and verify it

Cons

  • Anyone can also forge it
  • Proves nothing about the sender

Comparison table

AspectHMACPlain hash
Requires a keyYes, shared secretNo
Detects forgeryYesNo
Typical useWebhook signatures, API authChecksums, deduplication
Best fitYou must verify who produced a payloadYou only need an integrity or identity fingerprint

Recommendation

Use HMAC for anything an untrusted party could tamper with, and compare signatures in constant time. Keep plain hashes for internal checksums, cache keys, and deduplication where authorship does not matter.

Related tools

Related articles

Frequently asked questions

Why compare signatures in constant time?
Early-exit string comparison leaks how many bytes matched, which can be measured over many requests. Use a constant-time comparison helper instead of equality.
Can I reuse one HMAC key everywhere?
Avoid it. Scope keys per integration so a leak has a blast radius of one partner, and document how rotation overlaps old and new keys.
What pushes someone toward HMAC instead of Plain hash?
HMAC wins when you must verify who produced a payload. The practical upside is that proves the sender knows a shared secret, and standard for webhook signature headers. The trade-off to watch is that both sides must manage the shared key.
When does Plain hash beat HMAC for the same job?
Reach for Plain hash when you only need an integrity or identity fingerprint. It gives you no key to distribute or rotate plus ideal for checksums and cache keys, at the cost that anyone can also forge it.
Can ToolHub help me try HMAC and Plain hash before I commit?
Yes. The tools linked from each side of HMAC vs Plain Hash run in your browser, so you can exercise HMAC and Plain hash with sample data without uploading anything.