पायथन फोरेंसिक - हैश फंक्शन
ए hash functionउस फ़ंक्शन के रूप में परिभाषित किया जाता है जो एक निश्चित लंबाई के साथ निश्चित मूल्य पर बड़ी मात्रा में डेटा पर मैप करता है। यह फ़ंक्शन सुनिश्चित करता है कि समान इनपुट उसी आउटपुट में परिणाम करता है, जिसे वास्तव में हैश राशि के रूप में परिभाषित किया गया है। हैश राशि में विशिष्ट जानकारी के साथ एक विशेषता शामिल है।
इस कार्य को वापस करना व्यावहारिक रूप से असंभव है। इस प्रकार, किसी भी तीसरे पक्ष का हमला जैसे कि जानवर बल का हमला व्यावहारिक रूप से असंभव है। इसके अलावा, इस तरह के एल्गोरिथ्म को कहा जाता हैone-way cryptographic algorithm।
एक आदर्श क्रिप्टोग्राफ़िक हैश फ़ंक्शन के चार मुख्य गुण हैं -
- किसी भी इनपुट के लिए हैश मान की गणना करना आसान होना चाहिए।
- मूल इनपुट को उसके हैश से उत्पन्न करना संभव है।
- हैश को बदले बिना इनपुट को संशोधित करना संभव है।
- एक ही हैश के साथ दो अलग-अलग इनपुट्स को खोजना संभव नहीं है।
उदाहरण
निम्नलिखित उदाहरण पर विचार करें जो हेक्साडेसिमल प्रारूप में वर्णों का उपयोग करके पासवर्डों के मिलान में मदद करता है।
import uuid
import hashlib
def hash_password(password):
# userid is used to generate a random number
salt = uuid.uuid4().hex #salt is stored in hexadecimal value
return hashlib.sha256(salt.encode() + password.encode()).hexdigest() + ':' + salt
def check_password(hashed_password, user_password):
# hexdigest is used as an algorithm for storing passwords
password, salt = hashed_password.split(':')
return password == hashlib.sha256(salt.encode()
+ user_password.encode()).hexdigest()
new_pass = raw_input('Please enter required password ')
hashed_password = hash_password(new_pass)
print('The string to store in the db is: ' + hashed_password)
old_pass = raw_input('Re-enter new password ')
if check_password(hashed_password, old_pass):
print('Yuppie!! You entered the right password')
else:
print('Oops! I am sorry but the password does not match')
फ़्लोचार्ट
हमने निम्नलिखित फ्लोचार्ट की मदद से इस कार्यक्रम के तर्क को समझाया है -
उत्पादन
हमारा कोड निम्न आउटपुट का उत्पादन करेगा -
पासवर्ड हैश फ़ंक्शन के साथ दो बार मेल खाता है। यह सुनिश्चित करता है कि दो बार दर्ज किया गया पासवर्ड सही है, जो उपयोगी डेटा को इकट्ठा करने और उन्हें एन्क्रिप्टेड प्रारूप में सहेजने में मदद करता है।