डेवलपर टूल

HMAC जनरेटर

गुप्त कुंजी से संदेश पर हस्ताक्षर करें। कुछ भी भेजा नहीं जाता।

HMAC जनरेटर आपके डिवाइस पर चलता है
  • आपके ब्राउज़र में चलता है — आपका टेक्स्ट कहीं नहीं भेजा जाता
  • न साइन-अप, न सीमा, जितनी बार चाहें मुफ़्त इस्तेमाल करें

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

HMAC एक साथ दो बातें साबित करता है: संदेश में कोई बदलाव नहीं हुआ है, और जिसने उसे बनाया उसके पास साझा गुप्त कुंजी है। वेब पर ज़्यादातर जगह वेबहुक, API अनुरोध और डाउनलोड लिंक इसी से साइन किए जाते हैं।

साधारण हैश से अलग, उस तरीके से जो मायने रखता है

किसी भी संदेश का SHA-256 कोई भी निकाल सकता है, इसलिए अकेला हैश यह साबित नहीं करता कि उसे किसने बनाया — संदेश बदलिए, हैश दोबारा निकालिए, और कोई फ़र्क नहीं पकड़ सकता। HMAC गणना में गुप्त कुंजी मिला देता है, इसलिए कुंजी के बिना उसे दोबारा नहीं निकाला जा सकता। यही पूरा मकसद है, और इसी वजह से वेबहुक सिग्नेचर में हैश की जगह HMAC इस्तेमाल होता है।

सुरक्षित तरीके से जाँचना

सर्वर पर HMAC जाँचते समय उसकी तुलना constant-time फ़ंक्शन से करें — Node में crypto.timingSafeEqual, PHP में hash_equals। साधारण == जैसे ही दो बाइट अलग मिलते हैं लौट आता है, और लगा हुआ समय बता देता है कि सिग्नेचर का कितना हिस्सा सही था, जो धैर्य रखने पर सिग्नेचर जाली बनाने के लिए काफ़ी है। यह असली हमला है, सैद्धांतिक नहीं।

कौन-सा एल्गोरिदम

SHA-256, जब तक कुछ और तय न किया गया हो। SHA-1 इसलिए शामिल है क्योंकि कई पुराने API अब भी HMAC-SHA-1 माँगते हैं, और HMAC-SHA-1 उस तरह कमज़ोर साबित नहीं हुआ जैसे सादा SHA-1 हुआ है — लेकिन किसी नई चीज़ के लिए उसे चुनने की कोई वजह नहीं है।

Hex या Base64

यह पूरी तरह इस पर निर्भर है कि दूसरा पक्ष क्या अपेक्षा करता है। Hex दोगुना लंबा होता है और पढ़ने में आसान; Base64 ज़्यादा छोटा है और HTTP हेडर में आम है। एक ही सिग्नेचर दोनों में दिखाया जाता है।

आपकी कुंजी यहीं रहती है

ब्राउज़र के अपने Web Crypto API से बनाया गया। कुंजी और संदेश कहीं नहीं भेजे जाते, और ऐसा टूल देने का यही एकमात्र ज़िम्मेदार तरीका है — जो साइनिंग टूल आपकी गुप्त कुंजी अपलोड करता है, वह उसी चीज़ को सौंप देता है जिसकी हिफ़ाज़त वह कुंजी करती है।

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

HMAC जनरेटर — सवाल

HMAC हैश से कैसे अलग है?

हैश की गणना कोई भी दोबारा कर सकता है। HMAC के लिए गुप्त कुंजी चाहिए, इसलिए वह साबित करता है कि उसे किसने बनाया।

मुझे कौन-सा एल्गोरिदम इस्तेमाल करना चाहिए?

SHA-256, जब तक कोई API कुछ और न बताए। SHA-1 उन पुराने सिस्टम के लिए दिया गया है जिन्हें अब भी उसकी ज़रूरत है।

मुझे hex इस्तेमाल करना चाहिए या Base64?

जो भी दूसरा पक्ष अपेक्षा करता हो। एक ही सिग्नेचर दोनों रूपों में दिखाया जाता है।

तुलना constant-time ही क्यों होनी चाहिए?

सामान्य तुलना पहली असमानता मिलते ही रुक जाती है, और समय का यह अंतर बता देता है कि कितना हिस्सा सही था — जो सिग्नेचर जाली बनाने के लिए काफ़ी है।

क्या मेरी गुप्त कुंजी कहीं भेजी जाती है?

नहीं। सब कुछ Web Crypto API के ज़रिए आपके ब्राउज़र में चलता है।