কম্পিউটার টিউটোরিয়াল

পাইথনে সিকিউর হ্যাশ ও মেসেজ ডাইজেস্ট (hashlib মডিউল)

ফেডারেল ইনফরমেশন প্রসেসিং স্ট্যান্ডার্ড (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, ৮-से-৩২-বিট প্ল্যাটফর্মের জন্য অপ্টিমাইজড, ১ থেকে ৩২ বাইটের যেকোনো সাইজের ডাইজেস্ট তৈরি করে।
  1. পাইথনে লিস্ট ব্যবহার করে Stack এবং Queue বাস্তবায়ন

  2. পাইথন এবং Scrapy দিয়ে ওয়েব স্ক্রেপিং

  3. পাইথনে SHA এনকোডিং (SHA Hashing)

  4. পাইথনে MD5 হ্যাশ এনকোডিং