HMAC जनरेटर कैसे इस्तेमाल करें
- ठीक वही कच्ची रिक्वेस्ट बॉडी या मैसेज पेस्ट करें।
- सीक्रेट डालें और उसकी एन्कोडिंग चुनें (टेक्स्ट, hex या Base64)।
- वही एल्गोरिदम चुनें जो आपका प्रोवाइडर इस्तेमाल करता है (आमतौर पर HMAC-SHA256)।
- चाहें तो प्रोवाइडर के हेडर से टाइमस्टैम्प जोड़ें और वेरिफ़ाई करने के लिए प्राप्त सिग्नेचर पेस्ट करें।
- सिग्नेचर को hex या Base64 में कॉपी करें।
HMAC जनरेटर की खूबियाँ
- WebCrypto से HMAC-SHA256, SHA-1, SHA-384 और SHA-512
- की UTF-8 टेक्स्ट, hex या Base64 बाइट के रूप में
- Stripe शैली का वैकल्पिक "timestamp.payload" साइनिंग इनपुट
- प्राप्त सिग्नेचर वेरिफ़ाई करें (sha256=, v1= प्रीफ़िक्स, hex या Base64 स्वीकार करता है)
- GitHub, Shopify और Stripe वेबहुक के लिए तैयार हेडर फ़ॉर्मेट
- सीक्रेट कभी ब्राउज़र से बाहर नहीं जाते
HMAC जनरेटर का उदाहरण
क्लासिक टेस्ट वेक्टर के साथ HMAC-SHA256
इनपुट:
Message: The quick brown fox jumps over the lazy dog
Key: keyआउटपुट:
f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8HMAC जनरेटर के बारे में अक्सर पूछे जाने वाले सवाल
Stripe वेबहुक सिग्नेचर कैसे वेरिफ़ाई करूँ?
Stripe आपके एंडपॉइंट सीक्रेट से "timestamp.rawBody" को HMAC-SHA256 से साइन करता है। कच्ची रिक्वेस्ट बॉडी पेस्ट करें, सीक्रेट डालें, Stripe-Signature हेडर की t वैल्यू टाइमस्टैम्प फ़ील्ड में रखें और नतीजे की तुलना v1 वैल्यू से करें।
GitHub वेबहुक कैसे वेरिफ़ाई करूँ?
GitHub, X-Hub-Signature-256: sha256=<hex> भेजता है। वेबहुक सीक्रेट से कच्ची बॉडी का HMAC-SHA256 निकालें और hex आउटपुट से तुलना करें; टूल "sha256=" प्रीफ़िक्स अपने आप हटा देता है।
मेरा सिग्नेचर मेल क्यों नहीं खा रहा?
आमतौर पर इसलिए कि बॉडी दोबारा सीरियलाइज़ हो गई (स्पेस या कीज़ का क्रम बदल गया), की Base64/hex थी पर उसे टेक्स्ट माना गया, टाइमस्टैम्प प्रीफ़िक्स छूट गया, या अंत में एक न्यूलाइन जुड़ गई। हमेशा ठीक वही कच्चे बाइट साइन करें।
की hex में हो, Base64 में या टेक्स्ट?
जैसी प्रोवाइडर देता है वैसी। Shopify और GitHub के सीक्रेट सादे टेक्स्ट होते हैं; कुछ API Base64 की देते हैं। सही बाइट पाने के लिए उससे मेल खाती "Key encoding" चुनें।
HMAC आख़िर है क्या?
HMAC (RFC 2104) एक सीक्रेट की को हैश फ़ंक्शन के साथ इस तरह जोड़ता है कि सिर्फ़ की रखने वाले पक्ष ही टैग बना या जाँच सकें। की+मैसेज के सादे हैश के विपरीत, यह length-extension हमलों के प्रति संवेदनशील नहीं है।
तकनीकी नोट्स
HMAC (RFC 2104) H((K ⊕ opad) ‖ H((K ⊕ ipad) ‖ message)) की गणना करता है। हैश ब्लॉक साइज़ से लंबी कीज़ को पहले हैश किया जाता है; छोटी कीज़ में शून्य पैडिंग जोड़ी जाती है। टूल की को crypto.subtle.importKey से इम्पोर्ट करता है और crypto.subtle.sign से साइन करता है, इसलिए एक ही कच्चे बाइट साइन करने पर नतीजा सर्वर-साइड लाइब्रेरियों से बाइट-दर-बाइट मेल खाता है।