Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में संदेश प्रमाणीकरण के लिए कुंजी-आधारित हैशिंग (HMAC)

पायथन में क्रिप्टोग्राफिक हैश फ़ंक्शन का उपयोग करके संदेश प्रमाणीकरण 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 प्रमाणीकरण तंत्र का उपयोग किसी भी स्थान पर किया जा सकता है जहां सुरक्षा महत्वपूर्ण है जैसे सार्वजनिक नेटवर्क सेवाएं। उदाहरण के लिए, सार्वजनिक नेटवर्क में हम एक महत्वपूर्ण फ़ाइल/डेटा को पाइप या सॉकेट के माध्यम से भेज रहे हैं, उस फ़ाइल/डेटा पर हस्ताक्षर किए जाने चाहिए और फिर डेटा का उपयोग करने से पहले हस्ताक्षर का परीक्षण किया जाना चाहिए।

  1. पायथन प्रोग्राम: सिलेक्शन सॉर्ट एल्गोरिदम पायथन प्रोग्राम: सिलेक्शन सॉर्ट एल्गोरिदम

    इस लेख में, हम पायथन 3.x या उससे पहले के संस्करण में सिलेक्शन सॉर्ट और इसके कार्यान्वयन के बारे में जानेंगे।सिलेक्शन सॉर्ट एल्गोरिदम में, एक सरणी को अनसॉर्टेड भाग से न्यूनतम तत्व को पुनरावर्ती रूप से ढूंढकर और इसे शुरुआत में डालकर सॉर्ट किया जाता है। दिए गए सरणी पर सिलेक्शन सॉर्ट के निष्पादन के दौरा

  1. विंडोज पर पायथन प्रोग्रामिंग के लिए IDE विंडोज पर पायथन प्रोग्रामिंग के लिए IDE

    इस लेख में, हम विंडोज पर पायथन के लिए उपलब्ध विभिन्न IDE के बारे में जानेंगे।PyCharmइंटरैक्टिव पायथन कंसोलवेब फ्रेमवर्क के लिए समर्थनतेज़ रिफैक्टरिंग समयकम विकास समयJupyter Notebookलगभग हर पायथन मॉड्यूल के साथ संगतताकम स्पेस और हार्डवेयर आवश्यकताएंइनबिल्ट टर्मिनल और कर्नेल फीचर्सविभिन्न प्रकार के वि

  1. पायथन कोड ऑप्टिमाइज़ेशन टिप्स पायथन कोड ऑप्टिमाइज़ेशन टिप्स

    हालांकि हम सभी जानते हैं कि पायथन अन्य कंपाइल्ड भाषाओं जितना तेज़ या कुशल नहीं है। फिर भी, कई बड़ी कंपनियां दिखाती हैं कि पायथन कोड बहुत बड़े वर्कलोड को संभाल सकता है, जो दर्शाता है कि यह इतना धीमा भी नहीं है। इस सेक्शन में हम कुछ ऐसे टिप्स देखेंगे जिन्हें ध्यान में रखकर एक सही पायथन प्रोग्राम को औ