- होम
- एन्क्रिप्शन
- HMAC
HMAC जनरेटर और वेरिफ़ायर
गुप्त कुंजी से HMAC-SHA256 और अन्य HMAC सिग्नेचर बनाएँ और जाँचें।
वैकल्पिक। GitHub की X-Hub-Signature-256 हेडर वैल्यू (sha256=…) जैसी है वैसी पेस्ट की जा सकती है।
HMAC एक संदेश और साझा गुप्त कुंजी से बना सिग्नेचर है: जिसके पास कुंजी है वह इसे फिर से निकाल सकता है, और संदेश या कुंजी में कोई भी बदलाव अलग वैल्यू देता है। वेबहुक (GitHub, Stripe, Slack), साइन की गई API रिक्वेस्ट और JWT HS256 टोकन, सब इसे इस्तेमाल करते हैं। लिखते-लिखते HMAC अपडेट होता है, और आप किसी सिग्नेचर को पेस्ट करके जाँच सकते हैं। इसे आपके ब्राउज़र का बिल्ट-इन Web Crypto निकालता है, इसलिए संदेश और कुंजी कभी आपके डिवाइस से बाहर नहीं जाते; यह मुफ़्त है और साइन-अप की ज़रूरत नहीं।
HMAC कैसे बनाएँ और जाँचें
- संदेश ठीक वैसा ही पेस्ट करें जैसा साइन किया गया था — वेबहुक के लिए, रिक्वेस्ट की रॉ बॉडी।
- गुप्त कुंजी डालें, या रैंडम कुंजी के लिए “जनरेट करें” पर क्लिक करें; अगर कुंजी आपको hex बाइट में दी गई है तो “Hex” चुनें।
- एल्गोरिद्म चुनें (जब तक कुछ और न कहा गया हो, SHA-256) और नतीजा hex या Base64 में कॉपी करें।
- किसी सिग्नेचर को जाँचने के लिए उसे “सिग्नेचर जाँचें” के नीचे पेस्ट करें — GitHub की sha256=… हेडर वैल्यू जैसी है वैसी ही चल जाती है।
सुविधाएँ
- HMAC-SHA1, HMAC-SHA256, HMAC-SHA384 और HMAC-SHA512
- गुप्त कुंजी टेक्स्ट (UTF-8) या hex में, या “जनरेट करें” से 32 बाइट की रैंडम कुंजी
- नतीजा hex या Base64 में, लिखते-लिखते अपडेट
- मिले हुए सिग्नेचर को hex या Base64 (URL-safe भी) में जाँचता है, GitHub के sha256= या Slack के v0= प्रीफ़िक्स के साथ या बिना
- बताता है कि सिग्नेचर की लंबाई किसी दूसरे एल्गोरिद्म की है, साथ में उस पर जाने का बटन
- आपके ब्राउज़र के बिल्ट-इन Web Crypto से निकाला जाता है
क्या यह निजी है?
हाँ। HMAC आपके ब्राउज़र का बिल्ट-इन Web Crypto निकालता है; संदेश और गुप्त कुंजी इसी पेज पर रहते हैं और कभी अपलोड या सेव नहीं होते।
अक्सर पूछे जाने वाले सवाल
GitHub वेबहुक सिग्नेचर कैसे जाँचें?
रिक्वेस्ट की रॉ बॉडी को संदेश के रूप में, अपने वेबहुक सीक्रेट को टेक्स्ट कुंजी के रूप में, और X-Hub-Signature-256 हेडर की वैल्यू को “सिग्नेचर जाँचें” के नीचे पेस्ट करें। GitHub, sha256= के बाद बॉडी का hex HMAC-SHA256 भेजता है, और प्रीफ़िक्स जैसा है वैसा ही पढ़ लिया जाता है।
JWT HS256 सिग्नेचर कैसे जाँचें?
टोकन का हेडर और पेलोड — दूसरे बिंदु (डॉट) से पहले का सब कुछ — संदेश के रूप में और सीक्रेट को कुंजी के रूप में पेस्ट करें, SHA-256 चुनें, और टोकन का तीसरा हिस्सा “सिग्नेचर जाँचें” के नीचे पेस्ट करें। उसका URL-safe Base64 जैसा है वैसा ही पढ़ लिया जाता है।
मेरा सिग्नेचर मेल क्यों नहीं खाता?
संदेश बाइट-दर-बाइट वही होना चाहिए जो साइन किया गया था: दोबारा फ़ॉर्मैट किया गया JSON, आख़िर में छूटा या अतिरिक्त लाइन ब्रेक, या Windows (CRLF) लाइन एंडिंग, सब HMAC बदल देते हैं। यहाँ लिखा गया टेक्स्ट LF लाइन ब्रेक इस्तेमाल करता है। एल्गोरिद्म भी जाँचें, और यह भी कि कुंजी टेक्स्ट है या hex।
क्या यह OpenSSL जैसा ही नतीजा देता है?
हाँ। printf '%s' 'message' | openssl dgst -sha256 -hmac 'key' वही hex वैल्यू दिखाता है, और hex कुंजी -mac HMAC -macopt hexkey:… से मेल खाती है। printf या echo -n इस्तेमाल करें: सादा echo एक लाइन ब्रेक जोड़ता है जो साइन भी हो जाता है।
क्या HMAC-SHA1 अब भी इस्तेमाल करना सुरक्षित है?
HMAC के लिए, व्यवहार में हाँ: SHA-1 के ज्ञात कोलिज़न HMAC-SHA1 को नहीं तोड़ते, इसीलिए पुराने वेबहुक अब भी इसे इस्तेमाल करते हैं। किसी भी नए काम के लिए HMAC-SHA256 चुनें।