डेटा की सुरक्षा में सभी आईटी कंपनियों की प्रमुख चिंताओं में से एक। हमारे डेटा को प्रोजेक्ट करने और जांचने के लिए कई हैशिंग तकनीकें हैं।
Hash क्या है
हैश एक फ़ंक्शन है जो इनपुट के रूप में बाइट्स के चर लंबाई अनुक्रम लेता है और इसे एक निश्चित लंबाई अनुक्रम में परिवर्तित करता है। हालांकि, अपना मूल डेटा (इनपुट बाइट्स) वापस पाना आसान नहीं है। उदाहरण के लिए, x आपका इनपुट है और f f हैशिंग फ़ंक्शन है, तो f(x) की गणना करना त्वरित और आसान है लेकिन x को फिर से प्राप्त करने का प्रयास बहुत समय लेने वाला काम है।
हैश फ़ंक्शन से वापसी मान को हैश, चेकसम, हैश मान या संदेश डाइजेस्ट कहा जाता है।
हम ऊपर संक्षेप में नीचे बता सकते हैं -
मान लीजिए कि आप "हैलो वर्ल्ड" संदेश को md5 हैश फ़ंक्शन में बदलना चाहते हैं तो परिणाम एक है,
वास्तविक जीवन परिदृश्य में, हैश फ़ंक्शंस का उपयोग क्रिप्टोग्राफ़िक एल्गोरिदम में, डिजिटल हस्ताक्षर, फ़िंगरप्रिंट में, पासवर्ड और कई अन्य क्षेत्रों को संग्रहीत करने के लिए किया जाता है। एक पायथन प्रोग्रामर के रूप में, हमें डेटा या फ़ाइलों की दोहराव की जांच करने के लिए हैश फ़ंक्शन की आवश्यकता होती है, जब आप किसी सार्वजनिक नेटवर्क पर डेटा संचारित करते हैं, डेटाबेस में पासवर्ड संग्रहीत करते हैं, तो डेटा अखंडता की जांच करने के लिए।
अधिकतर उपयोग किए जाने वाले दो हैश फ़ंक्शन या एल्गोरिदम हैं -
-
MD5 - MD5 या संदेश डाइजेस्ट एल्गोरिथम 128-बिट हैश मान उत्पन्न करेगा। md5 एल्गोरिथम के साथ कुछ सुरक्षा समस्याएं हैं, इसलिए हमने मुख्य रूप से इसका उपयोग डेटा अखंडता की जांच के लिए किया है।
-
SHA - एल्गोरिथ्म के SHA समूह के अंतर्गत कई एल्गोरिदम आते हैं, जिन्हें यू.एस. संघीय सूचना प्रसंस्करण मानक द्वारा विकसित किया गया है। ये एल्गोरिदम md5 की तुलना में बहुत अधिक सुरक्षित हैं और इसलिए क्रिप्टोग्राफ़िक अनुप्रयोगों सहित कई क्षेत्रों में व्यापक रूप से उपयोग किए जाते हैं। इन एल्गोरिदम द्वारा उत्पन्न संदेश 160 बिट से लेकर 512 बिट तक होता है।
MD5
पायथन मानक पुस्तकालय में हैशलिब नामक एक मॉड्यूल शामिल है, जिसमें अधिकांश लोकप्रिय हैशिंग एल्गोरिदम शामिल हैं। अधिकांश एल्गोरिदम हैशलिब मॉड्यूल के अंदर कार्यान्वित किए जाते हैं, हालांकि, यदि आपके पास ओपनएसएसएल स्थापित है, तो हैशलिब का उपयोग इन एल्गोरिदम के साथ भी काम करने के लिए किया जा सकता है।
सबसे पहले, यदि आप किसी हैशिंग एल्गोरिथम का उपयोग करना चाहते हैं, तो हैशलिब मॉड्यूल आयात करें -
हैशलिब आयात करें
अब यह जांचने के लिए कि क्या हैशलिब मॉड्यूल में आवश्यक एल्गोरिदम या सभी एल्गोरिदम वर्तमान में उपलब्ध हैं -
>>> प्रिंट (हैशलिब.एल्गोरिदम_उपलब्ध){'sha3_256', 'sha3_224', 'sha1', 'blake2b', 'sha512', 'dsaEncryption', 'dsaWithSHA', 'DSA', 'md5', ' sha384', 'sha224', 'sha3_384', 'ecdsa-with-SHA1', 'DSA-SHA', 'SHA1', 'md4', 'SHA256', 'MD4', 'sha3_512', 'भँवर', ' sha256', 'shake_256', 'SHA', 'RIPEMD160', 'shake_128', 'SHA512', 'ripemd160', 'SHA224', 'sha', 'blake2s', 'SHA384', 'MD5'}
हैशलिब मॉड्यूल के माध्यम से उपलब्ध एल्गोरिदम की उपरोक्त सूची में ओपनएसएसएल के माध्यम से एल्गोरिदम शामिल हैं।
हालांकि, हमेशा उपलब्ध एल्गोरिदम की सूची की जांच करने के लिए, हम इसे एल्गोरिदम_गारंटी के माध्यम से देख सकते हैं।
>>> प्रिंट (hashlib.algorithms_guaranteed){'sha3_512', 'sha256', 'sha3_256', 'shake_256', 'sha3_224', 'sha1', 'blake2b', 'sha512', 'md5', ' शेक_128', 'sha384', 'sha224', 'sha3_384', 'blake2s'}
आइए md5 एल्गोरिथम के माध्यम से एक सरल प्रोग्राम बनाएं -
कोड
import hashlibash_obj =hashlib.md5(b'Hello, Python!')print(hash_obj.hexdigest())
आउटपुट
a0af7810eb5fcb84c730f851361de06a
उपरोक्त कोड "हैलो, पायथन!" लेता है इनपुट के रूप में स्ट्रिंग और उस स्ट्रिंग के हेक्स डाइजेस्ट को प्रिंट करता है। Hexdigest हैश का प्रतिनिधित्व करने वाला एक HEX स्ट्रिंग देता है।
हालाँकि, यदि आप चाहते हैं कि बाइट्स का क्रम वापस आए, तो आपको हैश_ओबज.डिगेट (), जैसे -
का उपयोग करना चाहिए।import hashlibash_obj =hashlib.md5(b'Hello, Python!')# लिए बाइट्सप्रिंट का क्रम (hash_obj.digest())
आउटपुट
b'\xa0\xafx\x10\xeb_\xcb\x84\xc70\xf8Q6\x1d\xe0j'
यदि आप ध्यान दें, हमने किसी भी स्ट्रिंग अक्षर से पहले 'बी' का उपयोग किया है, यह स्ट्रिंग से बाइट्स उत्पन्न करना है क्योंकि हैशिंग फ़ंक्शन केवल पैरामीटर के रूप में बाइट्स के अनुक्रम को स्वीकार करता है।
यदि आप कंसोल से स्ट्रिंग पास करना चाहते हैं, तो स्ट्रिंग को बाइट्स के क्रम में एन्कोड करना न भूलें -
आयात करेंआउटपुट
हैश में स्ट्रिंग डालें:हैलो, TutorialsPoint9a5d3fad65690dcf44adaec67226abe7