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

अजगर में संदेश प्रमाणीकरण के लिए की-हैशिंग

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


  1. चयन क्रम के लिए पायथन कार्यक्रम

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

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

    इस लेख में, हम विंडोज़ के लिए पायथन पर उपलब्ध विभिन्न आईडीई के बारे में जानेंगे। पिचर्म इंटरएक्टिव पायथन कंसोल वेब ढांचे के लिए समर्थन तेज़ अपवर्तन समय कम विकास जुपिटर नोटबुक लगभग हर पायथन मॉड्यूल के साथ संगतता कम जगह और हार्डवेयर आवश्यकताएं इनबिल्ट टर्मिनल और कर्नेल सुविधाएं विज़ेट की एक विस्त

  1. पायथन कोड के लिए अनुकूलन युक्तियाँ?

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