ফেডারেল ইনফরমেশন প্রসেসিং স্ট্যান্ডার্ড (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 পর্যন্ত ১২৮ বা ২৫৬ বিট সিকিউরিটি সহ।
BLAKE2 হলো একটি ক্রিপ্টোগ্রাফিক হ্যাশ ফাংশন (RFC 7693) যের দুই ফ্লेवर রয়েছে:
- BLAKE2b, ৬৪-বিট প্ল্যাটফর্মের জন্য অপ্টিমাইজড, ১ থেকে ৬৪ বাইটের যেকোনো সাইজের ডাইজেস্ট তৈরি করে,
- BLAKE2s, ৮-से-৩২-বিট প্ল্যাটফর্মের জন্য অপ্টিমাইজড, ১ থেকে ৩২ বাইটের যেকোনো সাইজের ডাইজেস্ট তৈরি করে।