Python 3.7

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




python

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

स्रोत कोड: Lib/hmac.py

यह मॉड्यूल RFC 2104 द्वारा वर्णित HMAC एल्गोरिथ्म को लागू करता है।

hmac.new(key, msg=None, digestmod=None)

एक नया hmac ऑब्जेक्ट लौटाएं। कुंजी एक बाइट्स या गुप्त वस्तु है जो गुप्त कुंजी देती है। अगर msg मौजूद है, तो मेथड कॉल update(msg) जाता है। डाइजेमोड डाइजेस्ट नाम है, डाइजेस्ट कंस्ट्रक्टर या मॉड्यूल को एचएमएसी ऑब्जेक्ट के उपयोग के लिए। यह hashlib.new() के लिए उपयुक्त किसी भी नाम का समर्थन करता है और hashlib.md5 कंस्ट्रक्टर को डिफॉल्ट करता है।

संस्करण 3.4 में बदला गया: पैरामीटर कुंजी एक बाइट्स या बायटेरियर ऑब्जेक्ट हो सकती है। Parameter msg, hashlib द्वारा समर्थित किसी भी प्रकार का हो सकता है। पैरामीटर डाइजेमोड एक हैश एल्गोरिथम का नाम हो सकता है।

संस्करण 3.4 के बाद से पदावनत किया गया, संस्करण 3.8 में निकाला जाएगा: MD5 के रूप में पाचन डिग्मेंट के लिए डिफ़ॉल्ट रूप से पचाना पदावनत है।

hmac.digest(key, msg, digest)

दिए गए कुँजी कुंजी के लिए msg का डाइजेस्ट लौटाएँ और पचाएँ । फ़ंक्शन HMAC(key, msg, digest).digest() , लेकिन एक अनुकूलित C या इनलाइन कार्यान्वयन का उपयोग करता है, जो उन संदेशों के लिए तेज़ है जो मेमोरी में फिट होते हैं। पैरामीटर कुंजी , संदेश और डाइजेस्ट का new() के समान अर्थ है।

CPython कार्यान्वयन विवरण, अनुकूलित C कार्यान्वयन का उपयोग केवल तब किया जाता है जब डाइजेस्ट एक स्ट्रिंग और डाइजेस्ट एल्गोरिथम का नाम होता है, जो OpenCL द्वारा समर्थित होता है।

संस्करण 3.7 में नया।

HMAC ऑब्जेक्ट में निम्न विधियाँ हैं:

HMAC.update(msg)

Msm के साथ hmac ऑब्जेक्ट को अपडेट करें। बार-बार कॉल सभी तर्कों के m.update(a); m.update(b) साथ एक एकल कॉल के बराबर हैं: m.update(a); m.update(b) m.update(a); m.update(b) m.update(a + b) बराबर है।

संस्करण 3.4 में बदला गया: पैरामीटर संदेश hashlib द्वारा समर्थित किसी भी प्रकार का हो सकता है।

HMAC.digest()

update() विधि में अब तक दिए गए बाइट्स के पाचन को लौटाएं। यह बाइट्स ऑब्जेक्ट कंस्ट्रक्टर को दिए गए डाइजेस्ट के डाइजेस्ट_साइज के समान ही होगा। इसमें NUL बाइट्स सहित गैर-ASCII बाइट्स हो सकते हैं।

चेतावनी

सत्यापन रूटीन के दौरान बाहरी रूप से आपूर्ति किए गए डाइजेस्ट के digest() के आउटपुट की तुलना करते समय, समय के हमलों के लिए भेद्यता को कम करने के लिए इसकी तुलना == ऑपरेटर के बजाए compare_digest() फ़ंक्शन का उपयोग करने के लिए की compare_digest()

HMAC.hexdigest()

digest() तरह digest() को छोड़कर केवल हेक्साडेसिमल अंकों वाली लंबाई को दो बार स्ट्रिंग के रूप में वापस किया जाता है। इसका उपयोग ईमेल या अन्य गैर-बाइनरी वातावरण में सुरक्षित रूप से मूल्य का आदान-प्रदान करने के लिए किया जा सकता है।

चेतावनी

सत्यापन रूटीन के दौरान बाहरी रूप से आपूर्ति किए गए hexdigest() के hexdigest() के आउटपुट की तुलना करते समय, समय के हमलों के लिए भेद्यता को कम करने के लिए इसकी तुलना == ऑपरेटर के बजाय compare_digest() फ़ंक्शन का उपयोग करने की सिफारिश की जाती है।

HMAC.copy()

Hmac ऑब्जेक्ट की एक प्रति ("क्लोन") लौटाएं। इसका उपयोग स्ट्रिंग्स के पाचन को कुशलतापूर्वक गणना करने के लिए किया जा सकता है जो एक सामान्य प्रारंभिक विकल्प साझा करते हैं।

एक हैश वस्तु में निम्नलिखित विशेषताएं हैं:

HMAC.digest_size

बाइट्स में जिसके परिणामस्वरूप एचएमएसी पचता है।

HMAC.block_size

बाइट्स में हैश एल्गोरिथ्म का आंतरिक ब्लॉक आकार।

संस्करण 3.4 में नया।

HMAC.name

इस HMAC का विहित नाम, हमेशा hmac-md5 , जैसे hmac-md5

संस्करण 3.4 में नया।

यह मॉड्यूल निम्न सहायक फ़ंक्शन भी प्रदान करता है:

hmac.compare_digest(a, b)

a == b । यह फ़ंक्शन सामग्री-आधारित लघु परिचलन व्यवहार से बचने के द्वारा समय विश्लेषण को रोकने के लिए डिज़ाइन किए गए दृष्टिकोण का उपयोग करता है, जिससे यह क्रिप्टोग्राफी के लिए उपयुक्त है। a और b दोनों एक ही प्रकार के होने चाहिए: या तो str (ASCII केवल, जैसे कि hexdigest() ), या बाइट्स-जैसे ऑब्जेक्ट द्वारा लौटाया गया हो।

ध्यान दें

यदि और बी अलग-अलग लंबाई के हैं, या यदि कोई त्रुटि होती है, तो टाइमिंग हमले सैद्धांतिक रूप से और बी के प्रकार और लंबाई के बारे में जानकारी को प्रकट कर सकते हैं-लेकिन उनके मूल्यों को नहीं।

संस्करण 3.3 में नया।

यह भी देखें

Module hashlib
पायथन मॉड्यूल सुरक्षित हैश फ़ंक्शन प्रदान करता है।