पायथन में क्रिप्टोग्राफिक हैश फ़ंक्शन का उपयोग करके संदेश प्रमाणीकरण HMAC तंत्र के माध्यम से प्राप्त किया जा सकता है। हम एक साझा गुप्त कुंजी के संयोजन में MD5, SHA-1 जैसे कई पुनरावृत्त हैश फ़ंक्शन के साथ HMAC का उपयोग कर सकते हैं।
मूल विचार हमारे डेटा को सुरक्षित करना है, वास्तविक डेटा के साथ एक साझा गुप्त कुंजी को मिलाकर एक क्रिप्टोग्राफिक हैश उत्पन्न करके। अंतिम परिणाम को गुप्त कुंजी के बिना भेजा जाता है लेकिन परिणामी हैश का उपयोग प्रेषित या संग्रहीत संदेश की जांच के लिए किया जा सकता है।
सिंटैक्स
hmac.new(key, msg=None, digestmod=None)
एक नया hmac ऑब्जेक्ट उत्पन्न करता है।
जहां -
- Key - यहां साझा गुप्त कुंजी।
- Msg - यहां हैश करने के लिए संदेश।
- Digestmod - HMAC ऑब्जेक्ट द्वारा उपयोग करने के लिए डाइजेस्ट नाम या मॉड्यूल।
HMAC मॉड्यूल के तरीके और विशेषताएं -
hmac.update(message)
दिए गए संदेश का उपयोग करके hmac ऑब्जेक्ट को अपडेट करने के लिए उपयोग किया जाता है। यदि आप इस मेथड को एक से अधिक बार कॉल करते हैं तो संदेश जुड़ जाएंगे।
hmac.digest()
अब तक update() मेथड को पास किए गए बाइट्स का डाइजेस्ट लौटाता है।
hashlib.hexdigest()
digest() की तरह लेकिन डाइजेस्ट केवल हेक्साडेसिमल अंकों वाली दोगुनी लंबाई की स्ट्रिंग के रूप में लौटाया जाता है। इसका उपयोग ईमेल या अन्य गैर-बाइनरी वातावरण में मूल्य का सुरक्षित रूप से आदान-प्रदान करने के लिए किया जा सकता है।
haslib.copy()
hmac ऑब्जेक्ट की एक प्रति ("क्लोन") लौटाता है।
उदाहरण 1
डिफ़ॉल्ट MD5 हैश एल्गोरिदम का उपयोग करके हैश बनाना।
# लाइब्रेरी आयात करें
import hashlib
import hmac
# डेटा अपडेट करें
update_bytes = b'Lorem ipsum dolor sit amet, consectetur adipiscing elit. \
Suspendisse tristique condimentum viverra. Nulla accumsan \
orci risus, non congue lacus feugiat id.'
# गुप्त कुंजी
password = b'402xy5#'
# 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")
# hmac ऑब्जेक्ट की एक प्रति बनाएं
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)
और हमारा परिणाम कुछ इस तरह होगा:
The first digest: 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 प्रमाणीकरण तंत्र का उपयोग किसी भी स्थान पर किया जा सकता है जहां सुरक्षा महत्वपूर्ण है जैसे सार्वजनिक नेटवर्क सेवाएं। उदाहरण के लिए, सार्वजनिक नेटवर्क में हम एक महत्वपूर्ण फ़ाइल/डेटा को पाइप या सॉकेट के माध्यम से भेज रहे हैं, उस फ़ाइल/डेटा पर हस्ताक्षर किए जाने चाहिए और फिर डेटा का उपयोग करने से पहले हस्ताक्षर का परीक्षण किया जाना चाहिए।