टूल
गाइड

HMAC जनरेटर

क्रिप्टो

Web Crypto से HMAC-SHA-1/256/384/512 हस्ताक्षर गणना करें। Hex या Base64 आउटपुट, पूरी तरह ब्राउज़र में।

100% क्लाइंट-साइड कोई बैकएंड नहीं

दूरस्थ URL लाए नहीं जाते; अपना JSON सीधे पेस्ट करें।

HMAC की गणना के लिए संदेश और गुप्त कुंजी दर्ज करें।
HMAC
आपकी गुप्त कुंजी ब्राउज़र से कभी बाहर नहीं जाती।
इस पृष्ठ पर

HMAC क्या है?#

HMAC का मतलब Hash-based Message Authentication Code है। एक सादा हैश (जैसे SHA-256) सवाल का जवाब देता है “क्या इस बाइट स्ट्रीम में बदलाव आया?”। HMAC एक मज़बूत सवाल का जवाब देता है: “क्या इस बाइट स्ट्रीम में बदलाव आया, और क्या इसे किसी ने भेजा जो वास्तव में मेरी गुप्त कुंजी साझा करता है?”। यह अंतर हर बार मायने रखता है जब कोई संदेश ऐसे चैनल पर यात्रा करता है जिस पर आप पूरी तरह भरोसा नहीं करते — वेबहुक कॉलबैक, साइन्ड URL, API रिक्वेस्ट साइनिंग, अंतर-सेवा टोकन।

यांत्रिक रूप से, HMAC एक गुप्त कुंजी को परिभाषित तरीके से (पैडिंग के साथ दो राउंड) हैश फलन में मिलाता है ताकि बिना कुंजी के डाइजेस्ट जालसाज़ी न की जा सके। आउटपुट एक नियत-लंबाई की बाइट स्ट्रिंग है जिसका आकार अंतर्निहित हैश से मेल खाता है: SHA-1 के लिए 20 बाइट्स, SHA-256 के लिए 32, SHA-384 के लिए 48, SHA-512 के लिए 64।

यह पेज Web Crypto API का उपयोग करके आपके ब्राउज़र में HMAC गणना करता है। आप हैश चुनते हैं, संदेश और गुप्त चिपकाते हैं, और डाइजेस्ट हेक्स या बेस64 के रूप में पाते हैं।

इसका उपयोग कैसे करें#

  1. संदेश टाइप करें या चिपकाएँ — वह पेलोड जिसे आप प्रमाणित करना चाहते हैं। ये वे बाइट्स हैं जिन्हें प्राप्तकर्ता अपनी ओर हैश करेगा।
  2. गुप्त कुंजी दर्ज करें। फ़ील्ड डिफ़ॉल्ट रूप से मास्क्ड है; टाइप करते समय उसे प्रकट करने के लिए दाईं ओर आँख बटन पर क्लिक करें। कुंजी और संदेश दोनों UTF-8 के रूप में एन्कोड होते हैं।
  3. एल्गोरिथ्म चुनें:
    • SHA-1 — 160-बिट। तेज़, पर केवल लीगेसी HMAC के लिए उपयुक्त (कुछ पुरानी साइनिंग प्रवाह अभी भी इसे अनिवार्य करते हैं)। डिजिटल हस्ताक्षरों के लिए SHA-1 उपयोग न करें।
    • SHA-256 — 256-बिट। आधुनिक डिफ़ॉल्ट; वेबहुक हस्ताक्षरों का भारी बहुसंख्यक (Stripe, GitHub, Slack-शैली प्रवाह) HMAC-SHA-256 उपयोग करता है।
    • SHA-384 / SHA-512 — लंबे डाइजेस्ट, मामूली रूप से अधिक टकराव प्रतिरोध, थोड़ा धीमे। कोई चुने जब प्राप्तकर्ता सिस्टम स्पष्ट रूप से वह माँगता हो।
  4. आउटपुट एन्कोडिंग चुनें: हेक्स (X-Signature-शैली हेडर के लिए आम) या बेस64 (आम जब डाइजेस्ट JSON या किसी टोकन में जड़ा हो)।
  5. उत्पन्न पर क्लिक करें। डाइजेस्ट दाएँ पैनल में दिखता है; स्थिति पट्टी एल्गोरिथ्म और बाइट लंबाई एक तर्कसंगत जाँच के रूप में दिखाती है। उसे लेने के लिए कॉपी।

प्रमुख विशेषताएँ#

  • Web Crypto द्वारा समर्थित। ब्राउज़र का नेटिव crypto.subtle उपयोग करता है, वही आदिम जो प्रोडक्शन कोड उपयोग करता है — कोई JavaScript पुनः-कार्यान्वयन नहीं।
  • लंबाई तर्कसंगत जाँच। हर डाइजेस्ट को अपने एल्गोरिथ्म के लिए अपेक्षित बाइट लंबाई के विरुद्ध सत्यापित किया जाता है, इसलिए कोई कटा हुआ या छेड़ा गया परिणाम चुपचाप नहीं फिसल सकता।
  • हेक्स या बेस64 आउटपुट। एक क्लिक से स्विच; दोबारा टाइप नहीं।
  • गुप्त स्थानीय रहता है। कुंजी फ़ील्ड एक पासवर्ड इनपुट के रूप में रेंडर होती है और कभी पेज से बाहर नहीं जाती — कोई बैकएंड नहीं।
  • सुरक्षित-संदर्भ जागरूक। यदि पेज कभी सादे HTTP पर लोड किया जाता, तो crypto.subtle अनुपलब्ध है और औज़ार गलत जवाब निकालने के बजाय ऐसा स्पष्ट रूप से बताता है।

कार्य उदाहरण#

क्लासिक संदर्भ जोड़ा (RFC 4231) Jefe कुंजी और संदेश what do ya want for nothing? का उपयोग करता है। इस पेज को SHA-256 और हेक्स पर सेट करने पर, डाइजेस्ट है:

5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843

उसी इनपुट के साथ SHA-512 पर स्विच करें और डाइजेस्ट लंबाई में दोगुना हो जाता है:

164b7a7bfcf819e2e395fbe73b56e0a387bd64222e831fd610270cd7ea2505549758bf75c05a994a6d034f65f8f0e6fdcaeab1a34d4a6b4b636e070a38bce737

आप दोनों यहीं पुनरुत्पादित कर सकते हैं: नमूना लोड करें, फिर उत्पन्न। यह सटीक जोड़ा वही है जिससे इस औज़ार का अपना टेस्ट सूट सही-ढंग सत्यापित करता है — यदि आप कभी कोई अलग डाइजेस्ट पाते हैं तो पेज के साथ छेड़छाड़ हुई है।

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

SHA-256 या SHA-512 — मुझे कौन सा उपयोग करना चाहिए?#

HMAC के लिए विशेष रूप से, SHA-256 व्यावहारिक डिफ़ॉल्ट है: हर प्रमुख वेबहुक साइनर इसका उपयोग करता है, यह तेज़ है, और 256 बिट डाइजेस्ट पहले से ही ब्रूट-फ़ोर्स क्षेत्र से कहीं आगे है। केवल तभी SHA-512 पर जाएँ जब (a) प्राप्तकर्ता सिस्टम वह माँगता हो, या (b) आप किसी नए प्रोटोकॉल को खरोंच से डिज़ाइन कर रहे हों और एक मामूली गति लागत पर टकराव प्रतिरोध में अतिरिक्त मार्जिन चाहते हों। जब तक कोई लीगेसी सिस्टम जो इसे अनिवार्य करता हो आप मिलाने नहीं जा रहे तब तक SHA-1 से पूरी तरह बचें।

क्या HMAC संदेश को एन्क्रिप्ट करने जैसा ही है?#

नहीं। HMAC केवल प्रमाणित करता है — यह सिद्ध करता है कि संदेश बदला नहीं गया और कुंजी रखने वाले किसी व्यक्ति से आया। संदेश खुद सादे टेक्स्ट में रहता है। यदि आपको गोपनीयता भी चाहिए तो HMAC को किसी एन्क्रिप्शन योजना के साथ जोड़ें, या AES-GCM जैसे किसी प्रमाणित-एन्क्रिप्शन मोड का उपयोग करें।

क्या गुप्त कुंजी डाइजेस्ट से पुनर्प्राप्त की जा सकती है?#

नहीं। डाइजेस्ट संदेश और कुंजी दोनों का एक एक-तरफ़ा फलन है; आउटपुट्स से कुंजी पुनर्प्राप्त करना कम्प्यूटेशनल रूप से असंभव है। फिर भी, किसी छोटी या अनुमेय कुंजी को उम्मीदवार कुंजीयाँ आज़माकर ऑफ़लाइन ब्रूट-फ़ोर्स किया जा सकता है — इसलिए किसी मानव-चुने पासवर्ड के बजाय कम से कम 128 बिट वास्तविक एन्ट्रॉपी वाली कुंजी उपयोग करें।

प्राप्तकर्ता कहता है मेरा हस्ताक्षर मेल नहीं खाता। मुझे पहले क्या जाँचना चाहिए?#

दस में से नौ बार यह संदेश का बाइट निरूपण है: अनुगामी न्यूलाइन, URL-एन्कोडिंग बनाम कच्चा बॉडी, JSON व्हाइटस्पेस, या अलग फ़ील्ड क्रम। आपने जिस बाइट्स पर हस्ताक्षर किए उनकी तुलना उन बाइट्स से करें जिन्हें प्राप्तकर्ता ने हैश किया, कैरेक्टर-दर-कैरेक्टर, किसी और चीज़ से पहले।