सभी IT कंपनियों की प्रमुख चिंताओं में से एक उनके डेटा की सुरक्षा है। हमारे डेटा को सुरक्षित और जांचने के लिए कई हैशिंग तकनीकें हैं।
हैश क्या है
हैश एक फ़ंक्शन है जो इनपुट के रूप में बाइट्स के चर-लंबाई अनुक्रम को लेता है और इसे निश्चित-लंबाई अनुक्रम में परिवर्तित करता है। हालांकि, अपने मूल डेटा (इनपुट बाइट्स) को वापस प्राप्त करना आसान नहीं है। उदाहरण के लिए, x आपका इनपुट है और f हैशिंग फ़ंक्शन है, तो f(x) की गणना करना त्वरित और आसान है लेकिन x को फिर से प्राप्त करने की कोशिश करना बहुत समय लेने वाला काम है।
हैश फ़ंक्शन से वापसी मान को हैश, चेकसम, हैश मान या संदेश डाइजेस्ट कहा जाता है।
हम उपरोक्त को नीचे संक्षेप में प्रस्तुत कर सकते हैं:

मान लीजिए आप "Hello World" संदेश को md5 हैश फ़ंक्शन में बदलना चाहते हैं तो परिणाम है:

वास्तविक जीवन परिदृश्य में, हैश फ़ंक्शन का उपयोग क्रिप्टोग्राफिक एल्गोरिदम, डिजिटल हस्ताक्षर, फिंगरप्रिंट, पासवर्ड संग्रहीत करने और कई अन्य क्षेत्रों में भारी मात्रा में किया जाता है। एक पायथन प्रोग्रामर के रूप में, हमें डेटा या फ़ाइलों की नकल की जांच करने के लिए, सार्वजनिक नेटवर्क पर डेटा प्रसारित करते समय डेटा अखंडता की जांच करने के लिए, डेटाबेस में पासवर्ड संग्रहीत करने आदि के लिए हैश फ़ंक्शन की आवश्यकता होती है।
अधिकतर उपयोग किए जाने वाले दो हैश फ़ंक्शन या एल्गोरिदम हैं:
MD5 - MD5 या संदेश डाइजेस्ट एल्गोरिदम 128-बिट हैश मान उत्पन्न करेगा। MD5 एल्गोरिदम के साथ कुछ सुरक्षा मुद्दे हैं इसलिए हम मुख्य रूप से इसका उपयोग डेटा अखंडता की जांच के लिए करते हैं।
SHA - SHA समूह के एल्गोरिदम के तहत कई एल्गोरिदम आते हैं, जिसे U.S फेडरल इंफॉर्मेशन प्रोसेसिंग स्टैंडर्ड द्वारा विकसित किया गया है। ये एल्गोरिदम MD5 की तुलना में अधिक सुरक्षित हैं और इसलिए क्रिप्टोग्राफिक अनुप्रयोगों सहित कई क्षेत्रों में व्यापक रूप से उपयोग किए जाते हैं। इन एल्गोरिदम द्वारा उत्पन्न संदेश 160 बिट्स से 512 बिट्स तक होता है।
MD5
पायथन मानक लाइब्रेरी में hashlib नामक एक मॉड्यूल शामिल है, जिसमें सबसे लोकप्रिय हैशिंग एल्गोरिदम शामिल हैं। अधिकांश एल्गोरिदम hashlib मॉड्यूल के अंदर कार्यान्वित हैं, हालांकि, यदि आपके पास OpenSSL इंस्टॉल है, तो hashlib का उपयोग इन एल्गोरिदम के साथ काम करने के लिए भी किया जा सकता है।
सबसे पहले, यदि आप किसी हैशिंग एल्गोरिदम का उपयोग करना चाहते हैं, तो hashlib मॉड्यूल आयात करें:
import hashlib
अब यह जांचने के लिए कि आवश्यक एल्गोरिदम या वर्तमान में hashlib मॉड्यूल में कौन से सभी एल्गोरिदम उपलब्ध हैं:
>>> print(hashlib.algorithms_available)
{'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', 'whirlpool', 'sha256', 'shake_256', 'SHA', 'RIPEMD160', 'shake_128', 'SHA512', 'ripemd160', 'SHA224', 'sha', 'blake2s', 'SHA384', 'MD5'}
उपरोक्त hashlib मॉड्यूल के माध्यम से उपलब्ध एल्गोरिदम की सूची में OpenSSL के माध्यम से एल्गोरिदम शामिल हैं।
हालांकि, हमेशा उपलब्ध एल्गोरिदम की सूची जांचने के लिए, हम इसे algorithms_guaranteed के माध्यम से जांच सकते हैं।
>>> print(hashlib.algorithms_guaranteed)
{'sha3_512', 'sha256', 'sha3_256', 'shake_256', 'sha3_224', 'sha1', 'blake2b', 'sha512', 'md5', 'shake_128', 'sha384', 'sha224', 'sha3_384', 'blake2s'}
आइए md5 एल्गोरिदम के माध्यम से एक सरल प्रोग्राम बनाएं:
कोड
import hashlib hash_obj = hashlib.md5(b'Hello, Python!') print(hash_obj.hexdigest())
आउटपुट
a0af7810eb5fcb84c730f851361de06a
उपरोक्त कोड "Hello, Python!" स्ट्रिंग को इनपुट के रूप में लेता है और उस स्ट्रिंग का HEX डाइजेस्ट प्रिंट करता है। Hexdigest हैश का प्रतिनिधित्व करने वाली HEX स्ट्रिंग लौटाता है।
हालांकि, यदि आप बाइट्स का अनुक्रम वापस चाहते हैं, तो आपको hash_obj.digest() का उपयोग करना चाहिए, जैसे:
import hashlib hash_obj = hashlib.md5(b'Hello, Python!') # बाइट्स का अनुक्रम उत्पन्न करने के लिए print(hash_obj.digest())
आउटपुट
b'\xa0\xafx\x10\xeb_\xcb\x84\xc70\xf8Q6\x1d\xe0j'
यदि आप ध्यान दें, तो हमने किसी भी स्ट्रिंग लिटरल से पहले 'b' का उपयोग किया है, यह स्ट्रिंग से बाइट्स उत्पन्न करने के लिए है क्योंकि हैशिंग फ़ंक्शन केवल पैरामीटर के रूप में बाइट्स के अनुक्रम को स्वीकार करता है।
यदि आप कंसोल से स्ट्रिंग पास करना चाहते हैं, तो स्ट्रिंग को बाइट्स के अनुक्रम में एन्कोड करना न भूलें:
import hashlib
mystring = input('Enter string to hash: ')
hash_obj = hashlib.md5(mystring.encode())
print(hash_obj.hexdigest())
आउटपुट
Enter string to hash: Hello, TutorialsPoint 9a5d3fad65690dcf44adaec67226abe7