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

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

वास्तविक जीवन परिदृश्य में, हैश फ़ंक्शन का उपयोग क्रिप्टोग्राफिक एल्गोरिदम, डिजिटल हस्ताक्षर, फिंगरप्रिंट, पासवर्ड संग्रहीत करने और कई अन्य क्षेत्रों में भारी मात्रा में किया जाता है। एक पायथन प्रोग्रामर के रूप में, हमें डेटा या फ़ाइलों की नकल की जांच करने के लिए, सार्वजनिक नेटवर्क पर डेटा प्रसारित करते समय डेटा अखंडता की जांच करने के लिए, डेटाबेस में पासवर्ड संग्रहीत करने आदि के लिए हैश फ़ंक्शन की आवश्यकता होती है।
अधिकतर उपयोग किए जाने वाले दो हैश फ़ंक्शन या एल्गोरिदम हैं:
MD5 - MD5 या संदेश डाइजेस्ट एल्गोरिदम 128-बिट हैश मान उत्पन्न करेगा। MD5 एल्गोरिदम के साथ कुछ सुरक्षा मुद्दे हैं इसलिए हम मुख्य रूप से इसका उपयोग डेटा अखंडता की जांच के लिए करते हैं।
SHA - SHA समूह के एल्गोरिदम के तहत कई एल्गोरिदम आते हैं, जिसे U.S फेडरल इंफॉर्मेशन प्रोसेसिंग स्टैंडर्ड द्वारा विकसित किया गया है। ये एल्गोरिदम MD5 की तुलना में अधिक सुरक्षित हैं और इसलिए क्रिप्टोग्राफिक अनुप्रयोगों सहित कई क्षेत्रों में व्यापक रूप से उपयोग किए जाते हैं। इन एल्गोरिदम द्वारा उत्पन्न संदेश 160 बिट्स से 512 बिट्स तक होता है।
SHA1
SHA एल्गोरिदम का एक समूह है जैसे - SHA1, SHA224, SHA256, SHA384, SHA512। SHA1 एल्गोरिदम, MD5 की तुलना में अधिक सुरक्षित माना जाता है और इसलिए कई क्षेत्रों में व्यापक रूप से उपयोग किया जाता है।
सबसे पहले, यदि आप किसी हैशिंग एल्गोरिदम का उपयोग करना चाहते हैं, तो 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'}
आइए sha1 एल्गोरिदम को समझने के लिए एक सरल प्रोग्राम बनाएं:
import hashlib hash_obj = hashlib.sha1(b'Hello, Python!') print(hash_obj.hexdigest())
आउटपुट
00d375a3693fde63e9540b91656c6ac5b5341f7c
हालांकि, यदि आप बाइट्स का अनुक्रम वापस चाहते हैं, तो आपको hash_obj.digest() का उपयोग करना चाहिए, जैसे:
import hashlib hash_obj = hashlib.sha1(b'Hello, Python!') # बाइट्स का अनुक्रम उत्पन्न करने के लिए print(hash_obj.digest())
आउटपुट
b'\x00\xd3u\xa3i?\xdec\xe9T\x0b\x91elj\xc5\xb54\x1f|'
यदि आप ध्यान दें, तो हमने किसी भी स्ट्रिंग लिटरल से पहले 'b' का उपयोग किया है, यह स्ट्रिंग से बाइट्स उत्पन्न करने के लिए है क्योंकि हैशिंग फ़ंक्शन केवल पैरामीटर के रूप में बाइट्स के अनुक्रम को स्वीकार करता है।
यदि आप कंसोल से स्ट्रिंग पास करना चाहते हैं, तो स्ट्रिंग को बाइट्स के अनुक्रम में एन्कोड करना न भूलें:
import hashlib
mystring = input('Enter string to hash: ')
hash_obj = hashlib.sha1(mystring.encode())
print(hash_obj.hexdigest())
आउटपुट
Enter string to hash: Hello, TutorialsPoint b20d14ead3e50552fc1f1cd96696b111a163dffa