संदेश अखंडता के लिए HMAC-SHA256
API पेलोड की अखंडता सुनिश्चित करने के लिए HMAC-SHA256 हस्ताक्षर बनाइए और सत्यापित कीजिए
संदेश अखंडता के लिए HMAC-SHA256, CoddyKit पर Java Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Java Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
HMAC क्या है
HMAC (हैश-आधारित संदेश प्रमाणीकरण कोड) किसी क्रिप्टोग्राफ़िक हैश फ़ंक्शन को गुप्त कुंजी के साथ मिलाकर MAC बनाता है। यह प्रमाणित करता है कि डेटा के साथ छेड़छाड़ नहीं हुई है AND प्रेषक को गुप्त कुंजी का ज्ञान है।
HMAC बनाम साधारण हैश
साधारण SHA-256 हैश की गणना कोई भी कर सकता है। HMAC के लिए गुप्त कुंजी आवश्यक होती है — केवल कुंजी जानने वाले पक्ष ही मान्य HMAC बना या सत्यापित कर सकते हैं। साधारण हैश अखंडता तो प्रदान करते हैं, लेकिन प्रमाणीकरण नहीं।
Java में HMAC-SHA256 की गणना
Mac.getInstance("HmacSHA256") का उपयोग करें, SecretKeySpec से आरंभ करें और doFinal(data) को कॉल करें।
byte[] keyBytes = "my-secret-key".getBytes(StandardCharsets.UTF_8);
SecretKeySpec keySpec = new SecretKeySpec(keyBytes, "HmacSHA256");
Mac mac = Mac.getInstance("HmacSHA256");
mac.init(keySpec);
byte[] hmac = mac.doFinal("payload data".getBytes(StandardCharsets.UTF_8));
String hmacHex = HexFormat.of().formatHex(hmac);
System.out.println(hmacHex); // 64-char hexHMAC का सत्यापन
साझा की गई कुंजी से प्राप्त डेटा पर HMAC की फिर से गणना करें। टाइमिंग हमलों से बचने के लिए स्थिर-समय तुलना (MessageDigest.isEqual) का उपयोग करें।
byte[] expectedHmac = computeHmac(key, receivedPayload);
byte[] actualHmac = HexFormat.of().parseHex(receivedHmacHex);
boolean valid = MessageDigest.isEqual(expectedHmac, actualHmac);
if (!valid) throw new SecurityException("HMAC verification failed — data tampered!");सुरक्षित कुंजी बनाना
HMAC कुंजियाँ पासवर्ड नहीं, बल्कि यादृच्छिक बाइट होनी चाहिए। 256-बिट कुंजी बनाने के लिए KeyGenerator या SecureRandom का उपयोग करें।
KeyGenerator kg = KeyGenerator.getInstance("HmacSHA256");
kg.init(256);
SecretKey key = kg.generateKey();
String b64Key = Base64.getEncoder().encodeToString(key.getEncoded());API अनुरोधों पर हस्ताक्षर के लिए HMAC
HTTP विधि, पथ, टाइमस्टैम्प और मुख्य भाग पर HMAC की गणना करें। HMAC को X-Signature हेडर में शामिल करें। सर्वर फिर से इसकी गणना करके तुलना करता है और सत्यापित करता है कि अनुरोध के साथ छेड़छाड़ नहीं हुई है।
String payload = method + "\n" + path + "\n" + timestamp + "\n" + body;
byte[] hmac = computeHmac(apiSecretKey, payload);
request.header("X-Signature", "hmac-sha256=" + HexFormat.of().formatHex(hmac));
request.header("X-Timestamp", timestamp);रिप्ले हमले से बचाव
हमलावर किसी मान्य हस्ताक्षरित अनुरोध को फिर से भेज सकता है। हस्ताक्षरित पेलोड में टाइमस्टैम्प शामिल करें और कुछ मिनटों से पुराने अनुरोधों को अस्वीकार करें।
long timestamp = Long.parseLong(request.getHeader("X-Timestamp"));
if (Math.abs(System.currentTimeMillis() / 1000 - timestamp) > 300) {
throw new SecurityException("Request too old — possible replay attack");
}वेबहुक सत्यापन के लिए HMAC
GitHub, Stripe और कई सेवाएँ HMAC से वेबहुक पर हस्ताक्षर करती हैं। यह सुनिश्चित करने के लिए X-Hub-Signature-256 हेडर का सत्यापन करें कि वेबहुक सेवा से आया है और उसमें बदलाव नहीं किया गया है।
// GitHub webhook verification:
String received = request.getHeader("X-Hub-Signature-256").replace("sha256=","");
byte[] expected = computeHmac(webhookSecret, request.getBody());
boolean valid = MessageDigest.isEqual(expected, HexFormat.of().parseHex(received));JWT में HMAC
HS256 (HMAC-SHA256) एक सामान्य JWT हस्ताक्षर एल्गोरिदम है। हेडर और पेलोड पर साझा गुप्त कुंजी से हस्ताक्षर किया जाता है। जारीकर्ता और सत्यापनकर्ता, दोनों को गुप्त कुंजी पता होनी चाहिए — यह समान विश्वास-सीमा वाली माइक्रोसर्विस के लिए उपयुक्त है।
HMAC कुंजी रोटेशन
HMAC कुंजियों को समय-समय पर बदलें। रोटेशन के दौरान थोड़ी ओवरलैप अवधि के लिए पुरानी और नई, दोनों कुंजियों से बने HMAC स्वीकार करें, फिर पुरानी कुंजी को हटा दें।
HMAC बनाम डिजिटल हस्ताक्षरों का उपयोग कब करें
HMAC: सममित — दोनों पक्ष गुप्त कुंजी साझा करते हैं, यह तेज़ है और आंतरिक API तथा वेबहुक सत्यापन के लिए उपयोगी है। डिजिटल हस्ताक्षर (RSA/ECDSA): असममित — केवल हस्ताक्षरकर्ता के पास निजी कुंजी होती है और सार्वजनिक कुंजी रखने वाला कोई भी व्यक्ति उसका सत्यापन कर सकता है; यह वितरित प्रणालियों में JWT के लिए उपयोगी है।
त्वरित जाँच
HMAC की तुलना में स्थिर-समय समानता का उपयोग करना क्यों आवश्यक है?
पुनरावलोकन
HMAC-SHA256 प्रमाणित अखंडता प्रदान करता है — यह डेटा के स्रोत और छेड़छाड़ न होने, दोनों का प्रमाण देता है। Mac.getInstance("HmacSHA256") का उपयोग करें। हमेशा स्थिर-समय तुलना करें। रिप्ले हमलों से बचने के लिए टाइमस्टैम्प शामिल करें। इसका उपयोग API पर हस्ताक्षर करने, वेबहुक सत्यापन और HS256 JWT के लिए करें।
एआई शिक्षक के साथ Java सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 104
- पाठ
- 374
अक्सर पूछे जाने वाले प्रश्न
क्या “संदेश अखंडता के लिए HMAC-SHA256” पाठ निःशुल्क है?
हाँ—“संदेश अखंडता के लिए HMAC-SHA256” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Java Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“संदेश अखंडता के लिए HMAC-SHA256” में मैं क्या सीखूँगा?
API पेलोड की अखंडता सुनिश्चित करने के लिए HMAC-SHA256 हस्ताक्षर बनाइए और सत्यापित कीजिए आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Java Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Java Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Java Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“संदेश अखंडता के लिए HMAC-SHA256” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Java Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Java Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- MessageDigest से क्रिप्टोग्राफ़िक हैशिंग
- AES सममित एन्क्रिप्शन
- संदेश अखंडता के लिए HMAC-SHA256
- JWT: संरचना, निर्माण और सत्यापन