tigtools

HMAC जनरेटर

किसी संदेश और गुप्त कुंजी के लिए keyed message authentication code (HMAC) बनाएँ या मिले हुए हस्ताक्षर की जाँच करें। कुंजी और संदेश आपके ब्राउज़र में ही रहते हैं।

आपके ब्राउज़र में चलता है साइन अप की ज़रूरत नहीं

कुंजी और संदेश सिर्फ़ इस ब्राउज़र टैब में संसाधित होते हैं और कहीं नहीं भेजे जाते। फिर भी, साझा या अविश्वसनीय कंप्यूटर पर सक्रिय प्रोडक्शन सीक्रेट पेस्ट करने से बचें।
कुंजी का फ़ॉर्मैट

जैसा टाइप किया गया है, ठीक उसी UTF-8 रूप में हस्ताक्षर किया जाता है। अंत में लगा स्पेस या लाइन ब्रेक परिणाम बदल देता है।

आउटपुट

ऊपर दिए परिणाम से मिलान करने के लिए हस्ताक्षर hex (किसी भी अक्षर-रूप में) या Base64 में पेस्ट करें।

इस्तेमाल करने का तरीका

  1. गुप्त कुंजी डालें और चुनें कि वह सादा टेक्स्ट है या hex बाइट्स।
  2. संदेश पेस्ट करें, उदाहरण के लिए webhook payload, ठीक उसी रूप में जैसा आपको मिला है।
  3. वह एल्गोरिदम और आउटपुट एन्कोडिंग चुनें जिसका उपयोग आपकी सेवा करती है; टाइप करते ही HMAC अपडेट होता है।
  4. हस्ताक्षर जाँचने के लिए, उसे सत्यापन बॉक्स में पेस्ट करें और “मेल खाता है” देखें।

यह कैसे काम करता है

HMAC (RFC 2104) एक सीक्रेट की को हैश फ़ंक्शन के साथ मिलाकर ऐसा सिग्नेचर बनाता है जिसे केवल की रखने वाला व्यक्ति बना सकता है। वेबहुक और साइन किए गए API अनुरोध जैसी सेवाएँ हर संदेश के साथ HMAC भेजती हैं, ताकि प्राप्तकर्ता जाँच सके कि संदेश असली है और उसमें बदलाव नहीं हुआ है।

यह टूल आपके ब्राउज़र के Web Crypto API (crypto.subtle.importKey और sign) का उपयोग करता है और RFC 4231 तथा RFC 2202 के टेस्ट वेक्टरों से जाँचा गया है। टेक्स्ट की और संदेश को UTF-8 के रूप में एन्कोड किया जाता है। हेक्स की को डिकोड करके कच्चे बाइट में बदला जाता है; स्पेस, कोलन और शुरुआत का 0x अनदेखा किया जाता है। HMAC-SHA-256 सबसे आम विकल्प है; HMAC-SHA-1 को MAC के रूप में अब भी सुरक्षित माना जाता है, लेकिन इसका उपयोग मुख्य रूप से पुराने API में होता है।

अगर आपका सिग्नेचर मेल नहीं खाता, तो उन बातों की जाँच करें जिनमें अक्सर अंतर होता है: संदेश के सटीक बाइट (कई वेबहुक प्रदाता दोबारा फ़ॉर्मैट किए गए JSON के बजाय मूल बॉडी को साइन करते हैं), टाइमस्टैम्प या प्रीफ़िक्स जिसे प्रदाता साइन की जाने वाली स्ट्रिंग में जोड़ता है, की को टेक्स्ट के रूप में उपयोग किया गया है या उसे पहले हेक्स या Base64 से डिकोड करना है, और अपेक्षित सिग्नेचर हेक्स है या Base64। यह भी जाँचें कि उसमें “sha256=” जैसा प्रीफ़िक्स तो नहीं है, जिसे तुलना से पहले हटाना चाहिए।

उदाहरण

RFC 4231 टेस्ट केस

की “Jefe” (टेक्स्ट), संदेश “what do ya want for nothing?” और HMAC-SHA-256 से 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843 मिलता है। इसे लोड करने के लिए “Try an example” चुनें।

वेबहुक सिग्नेचर की जाँच

एक प्रदाता हर अनुरोध के साथ X-Signature: sha256=… हेडर भेजता है। मूल अनुरोध बॉडी को संदेश के रूप में चिपकाएँ, अपने वेबहुक सीक्रेट को की के रूप में डालें, HMAC-SHA-256 और Hex चुनें, फिर “sha256=” के बाद का मान पुष्टि बॉक्स में चिपकाएँ।

हेक्स-एन्कोड की गई की

कुछ सिस्टम 0b0b0b… जैसी हेक्स स्ट्रिंग के रूप में की देते हैं। डिकोड किए गए बाइट से साइन करने के लिए की फ़ॉर्मैट के रूप में Hex चुनें; उसी स्ट्रिंग को टेक्स्ट मानने पर परिणाम बिल्कुल अलग होगा।

अक्सर पूछे जाने वाले सवाल

HMAC और साधारण हैश में क्या अंतर है?

कोई भी व्यक्ति किसी संदेश का साधारण हैश, जैसे SHA-256, बना सकता है। HMAC एक सीक्रेट की पर भी निर्भर करता है, इसलिए केवल की रखने वाला व्यक्ति ही इसे बना या जाँच सकता है। इससे साबित होता है कि संदेश की धारक ओर से आया है और उसमें बदलाव नहीं हुआ है।

मेरा HMAC सर्वर वाले HMAC से मेल क्यों नहीं खाता?

अक्सर इनपुट बाइट अलग होते हैं: लाइन एंडिंग, खाली जगह, JSON की का क्रम, कैरेक्टर एन्कोडिंग, या ऐसी की जिसे हेक्स या Base64 से डिकोड किया जाना चाहिए। साथ ही, एक ही एन्कोडिंग (हेक्स या Base64) की तुलना करें और “sha256=” जैसे प्रीफ़िक्स हटा दें।

क्या मेरी सीक्रेट की कहीं भेजी जाती है?

नहीं। की और संदेश का उपयोग केवल इस ब्राउज़र टैब में Web Crypto API द्वारा किया जाता है। इन्हें अपलोड या संग्रहीत नहीं किया जाता और न ही एनालिटिक्स में शामिल किया जाता है।

क्या HMAC-SHA-1 अब भी सुरक्षित है?

SHA-1 में टकराव से HMAC-SHA-1 सीधे तौर पर असुरक्षित नहीं होता और अनुकूलता के लिए इसका उपयोग अब भी स्वीकार्य है। नए सिस्टम के लिए HMAC-SHA-256 या उससे मज़बूत विकल्प इस्तेमाल करें।

गोपनीयता

कुंजी, संदेश और परिणाम सिर्फ़ इस ब्राउज़र टैब में रहते हैं। कुछ भी अपलोड, संग्रहीत या analytics को नहीं भेजा जाता; सिर्फ़ इस टूल के इस्तेमाल की एक अनाम घटना दर्ज होती है।