फेडरल इंफॉर्मेशन प्रोसेसिंग स्टैंडर्ड (FIPS) सुरक्षित हैश एल्गोरिदम SHA1, SHA224, SHA256, SHA384, और SHA512 को परिभाषित करता है। RSA, Rivest, Shamir, और Adleman के उपनामों के प्रारंभिक अक्षरों से बना संक्षिप्त नाम, MD5 एल्गोरिदम को परिभाषित करता है। पुराने एल्गोरिदम को मैसेज डाइजेस्ट कहा जाता था। आधुनिक शब्द सुरक्षित हैश है।
hashlib मॉड्यूल का उपयोग निम्नलिखित एल्गोरिदम को लागू करने के लिए किया जाता है।
- md5
- sha1
- sha224
- sha256
- sha384
- sha512
hashlib.new(name[, data])
एक जेनेरिक कंस्ट्रक्टर है जो वांछित एल्गोरिदम के स्ट्रिंग नाम को अपने पहले पैरामीटर के रूप में लेता है। यह ऊपर सूचीबद्ध हैश के साथ-साथ किसी भी अन्य एल्गोरिदम तक पहुंच की अनुमति देने के लिए भी मौजूद है जो आपकी OpenSSL लाइब्रेरी पेश कर सकती है। नामित कंस्ट्रक्टर new() की तुलना में बहुत तेज हैं और इन्हें प्राथमिकता दी जानी चाहिए।
>>> hash = hashlib.new('md5',b'hello')
>>> hash.hexdigest()
'5d41402abc4b2a76b9719d911017c592'
>>> import hashlib
व्यक्तिगत नामित कंस्ट्रक्टर का उपयोग करके
>>> msg = hashlib.sha256() >>> msg.update(b'Simple is better than complex') >>> msg.digest() b'\xabz\xd8C(n\xb3\x8b\xf6\x0c\x0e\xf2\x81z\xd7\xf93\x835\xb2\xa1\x9cM\xb1S\x1f\xf7\xf9\x1av-F' >>> msg.block_size 64 >>> msg.hexdigest() 'ab7ad843286eb38bf60c0ef2817ad7f9338335b2a19c4db1531ff7f91a762d46' >>> msg = hashlib.md5() >>> msg.update(b'Simple is better than complex') >>> msg.hexdigest() 'fd34bb8fafd17f1a21d7bb6e38c8dc68'
हैश ऑब्जेक्ट में निम्नलिखित मेथड हैं -
| update() | बाइट्स-जैसे ऑब्जेक्ट के साथ हैश ऑब्जेक्ट को अपडेट करें। m.update(a); m.update(b) m.update(a+b) के बराबर है। |
| digest() | अब तक update() मेथड को पास किए गए डेटा का डाइजेस्ट लौटाएं। |
| hexdigest() | डाइजेस्ट को दोगुनी लंबाई के स्ट्रिंग ऑब्जेक्ट के रूप में लौटाया जाता है, जिसमें केवल हेक्साडेसिमल अंक होते हैं। |
| copy() | हैश ऑब्जेक्ट की एक प्रति लौटाएं। इसका उपयोग सामान्य प्रारंभिक सबस्ट्रिंग साझा करने वाले डेटा के डाइजेस्ट की गणना करने के लिए किया जा सकता है। |
Hashlib निम्नलिखित एट्रिब्यूट प्रदान करता है -
| algorithms_guaranteed | इस मॉड्यूल द्वारा सभी प्लेटफार्मों पर समर्थित होने की गारंटी वाले हैश एल्गोरिदम के नामों का एक सेट। |
| algorithms_available | चल रहे पायथन इंटरप्रेटर में उपलब्ध हैश एल्गोरिदम के नामों का एक सेट। |
| digest_size | परिणामी हैश का आकार बाइट्स में। |
| block_size | हैश एल्गोरिदम का आंतरिक ब्लॉक आकार बाइट्स में। |
| name | इस हैश का विहित नाम, हमेशा लोअरकेस और हमेशा new() के पैरामीटर के रूप में उपयुक्त ताकि इस प्रकार का एक और हैश बनाया जा सके। |
shake_128() और shake_256() एल्गोरिदम length_in_bits//2 तक 128 या 256 बिट्स की सुरक्षा के साथ परिवर्तनीय लंबाई के डाइजेस्ट प्रदान करते हैं।
BLAKE2 एक क्रिप्टोग्राफिक हैश फंक्शन है जिसे RFC 7693 में परिभाषित किया गया है जो दो फ्लेवर में आता है -
- BLAKE2b, 64-बिट प्लेटफॉर्म के लिए अनुकूलित और 1 और 64 बाइट्स के बीच किसी भी आकार के डाइजेस्ट उत्पन्न करता है,
- BLAKE2s, 8- से 32-बिट प्लेटफॉर्म के लिए अनुकूलित और 1 और 32 बाइट्स के बीच किसी भी आकार के डाइजेस्ट उत्पन्न करता है।