अजगर में क्रिप्टोग्राफिक हैश फ़ंक्शन का उपयोग करके संदेश प्रमाणीकरण एचएमएसी तंत्र के माध्यम से प्राप्त किया जा सकता है। हम HMAC का उपयोग कई चलने योग्य हैश फ़ंक्शंस जैसे MD5, SHA-1 के साथ एक गुप्त साझा कुंजी के संयोजन में कर सकते हैं।
मूल विचार एक साझा गुप्त कुंजी के साथ संयुक्त वास्तविक डेटा का क्रिप्टोग्राफ़िक हैश उत्पन्न करके, हमारे डेटा को सुरक्षित करना है। अंतिम परिणाम गुप्त कुंजी के बिना भेजा जाता है लेकिन परिणामी हैश का उपयोग प्रेषित या संग्रहीत संदेश की जांच के लिए किया जा सकता है।
सिंटैक्स
hmac.new(key, msg = None, digestmod = None)
एक नया hmac ऑब्जेक्ट उत्पन्न करता है।
कहाँ -
-
कुंजी - यहां साझा गुप्त कुंजी।
-
संदेश - यहां हैश करने के लिए संदेश यहां हैश करने के लिए संदेश
-
डाइजेस्टमॉड - HMAC ऑब्जेक्ट के उपयोग के लिए डाइजेस्ट नाम या मॉड्यूल
HMAC मॉड्यूल के तरीके और गुण -
-
hmac.update(message)
दिए गए संदेश का उपयोग करके hmac ऑब्जेक्ट को अपडेट करने के लिए उपयोग किया जाता है। यदि आप इस विधि को एक से अधिक बार कॉल करते हैं तो संदेश संलग्न हो जाएंगे।
-
hmac.digest ()
अब तक अपडेट () विधि में पारित बाइट्स का डाइजेस्ट लौटाएं।
-
हैशलिब.हेक्सडाइजेस्ट ()
डाइजेस्ट की तरह () डाइजेस्ट को छोड़कर केवल हेक्साडेसिमल अंकों वाली लंबाई से दोगुना स्ट्रिंग के रूप में लौटाया जाता है। इसका उपयोग ईमेल या अन्य गैर-बाइनरी वातावरण में सुरक्षित रूप से मूल्य का आदान-प्रदान करने के लिए किया जा सकता है।
-
haslib.copy ()
hmac ऑब्जेक्ट की एक कॉपी ("क्लोन") लौटाएं।
उदाहरण1
डिफ़ॉल्ट MD5 हैश एल्गोरिथम का उपयोग करके हैश बनाना।
#Import libraries import hashlib import hmac #data update_bytes = b'Lorem ipsum dolor sit amet, consectetur adipiscing elit. \ Suspendisse tristique condimentum viverra. Nulla accumsan \ orci risus, non congue lacus feugiat id.' #secret key password = b'402xy5#' #Generate cryptographic hash using md5 my_hmac = hmac.new(update_bytes, password, hashlib.md5) print("The first digest: " + str(my_hmac.digest())) print("The Canonical Name: " + my_hmac.name) print("Block size: " + str (my_hmac.block_size) + "bytes") print("Digest size: " + str(my_hmac.digest_size) + "bytes") #Create a copy of the hmac object my_hmac_cpy = my_hmac.copy() print("The Copied digest: " + str(my_hmac_cpy.digest()))
आउटपुट
The first digest: b'H\xcc.nf\xdd\x8bC\x8di\x0cC\xb8\xe9l\xa8' The Canonical Name: hmac-md5 Block size: 64bytes Digest size: 16bytes The Copied digest: b'H\xcc.nf\xdd\x8bC\x8di\x0cC\xb8\xe9l\xa8'
जैसा कि SHA1 को MD5 एल्गोरिथम से अधिक सुरक्षित माना जाता है और यदि आप SHA1 एल्गोरिथम का उपयोग करके उपरोक्त प्रोग्राम को चलाने की सोच रहे हैं। बस इस पंक्ति में एल्गोरिथम नाम संशोधित करें,
my_hmac =hmac.new(update_bytes, password,hashlib.sha1)
और हमारा परिणाम कुछ ऐसा होगा:
पहला डाइजेस्ट:b'\xc3T\xe7[\xc8\xa3O/$\xbd`A\xad\x07d\xe8\xae\xa2!\xb4'
The Canonical Name: hmac-sha1 Block size: 64bytes Digest size: 20bytes The Copied digest: b'\xc3T\xe7[\xc8\xa3O/$\xbd`A\xad\x07d\xe8\xae\xa2!\xb4'
अनुप्रयोग
HMAC प्रमाणीकरण तंत्र का उपयोग किसी भी स्थान पर किया जा सकता है जहां सार्वजनिक नेटवर्क सेवाओं की तरह सुरक्षा महत्वपूर्ण है। उदाहरण के लिए, सार्वजनिक नेटवर्क में हम एक पाइप या सॉकेट के माध्यम से एक महत्वपूर्ण फ़ाइल/डेटा भेज रहे हैं, उस फ़ाइल/डेटा पर हस्ताक्षर किए जाने चाहिए और फिर डेटा का उपयोग करने से पहले हस्ताक्षर का परीक्षण किया जाना चाहिए।