HMAC
HMAC (Hash-Based Message Authentication Code)
एक गुप्त कुंजी के साथ संयुक्त क्रिप्टोग्राफ़िक हैश फ़ंक्शन का उपयोग करके मैसेज ऑथेंटिकेशन कोड बनाने की एक विशिष्ट विधि, जो किसी संदेश की डेटा अखंडता और प्रामाणिकता दोनों को सत्यापित करती है।
तकनीकी विवरण
HMAC (RFC 2104) इस प्रकार गणना करता है: HMAC(K, m) = H((K' XOR opad) || H((K' XOR ipad) || m)), जहाँ H एक हैश फ़ंक्शन (SHA-256) है, K' ब्लॉक साइज़ तक पैडेड कुंजी है, ipad 0x36 दोहराया गया है, और opad 0x5c दोहराया गया है। यह डबल-हैशिंग निर्माण लेंथ-एक्सटेंशन अटैक को रोकता है जो प्लेन hash(key || message) को प्रभावित करते हैं। HMAC-SHA256 का उपयोग JWT सिग्नेचर, API ऑथेंटिकेशन (AWS Signature V4), वेबहुक वेरिफ़िकेशन (Stripe, GitHub), और की डेरिवेशन (HKDF) में होता है। Web Crypto API subtle.sign() और subtle.verify() के माध्यम से HMAC को सपोर्ट करता है। टाइमिंग साइड-चैनल अटैक को रोकने के लिए HMAC सत्यापित करते समय टाइमिंग-सेफ़ तुलना आवश्यक है।
उदाहरण
```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('');
```