{# canonical_base is the OWNING tenant's origin: all 16 Peasy domains serve the same catalogue, so a page rendered by a non-owner points its canonical at the owner instead of competing with it. Falls back to this site for static/self-owned pages. #}
🍋
Menu
Security

HMAC

HMAC (Hash-Based Message Authentication Code)

Konstruksi spesifik untuk membuat kode autentikasi pesan menggunakan fungsi hash kriptografi yang dikombinasikan dengan kunci rahasia, memverifikasi integritas data dan keaslian pesan.

Detail Teknis

HMAC (RFC 2104) menghitung: HMAC(K, m) = H((K' XOR opad) || H((K' XOR ipad) || m)), di mana H adalah fungsi hash (SHA-256), K' adalah kunci yang di-pad ke ukuran blok, ipad adalah 0x36 yang diulang, dan opad adalah 0x5c yang diulang. Konstruksi double-hashing ini mencegah serangan length-extension yang mempengaruhi hash(key || message) biasa. HMAC-SHA256 digunakan dalam signature JWT, autentikasi API (AWS Signature V4), verifikasi webhook (Stripe, GitHub), dan derivasi kunci (HKDF). Web Crypto API mendukung HMAC melalui subtle.sign() dan subtle.verify(). Perbandingan timing-safe sangat penting saat memverifikasi HMAC untuk mencegah serangan timing side-channel.

Contoh

```javascript
// HMAC — Web Crypto API example
const data = new TextEncoder().encode('sensitive data');
const hash = await crypto.subtle.digest('SHA-256', data);
const hex = Array.from(new Uint8Array(hash))
  .map(b => b.toString(16).padStart(2, '0')).join('');
```

Alat Terkait

Istilah Terkait