কম্পিউটার

পাইথন (হাশলিব) ব্যবহার করে নিরাপদ হ্যাশ এবং বার্তা হজম করুন


ফেডারেল ইনফরমেশন প্রসেসিং স্ট্যান্ডার্ড (FIPS) নিরাপদ হ্যাশ অ্যালগরিদম SHA1, SHA224, SHA256, SHA384, এবং SHA512 সংজ্ঞায়িত করে৷ RSA রিভেস্ট, শামির এবং অ্যাডলেম্যানের উপাধির আদ্যক্ষর দিয়ে তৈরি সংক্ষিপ্ত রূপ MD5 অ্যালগরিদমকে সংজ্ঞায়িত করে। পুরানো অ্যালগরিদমগুলিকে মেসেজ ডাইজেস্ট বলা হত। আধুনিক শব্দটি নিরাপদ হ্যাশ।

hashlib মডিউল নিম্নলিখিত অ্যালগরিদম বাস্তবায়ন করতে ব্যবহৃত হয়.

  • md5
  • শা1
  • sha224
  • sha256
  • sha384
  • sha512

hashlib.new(নাম[, ডেটা])

এটি একটি জেনেরিক কনস্ট্রাক্টর যা পছন্দসই অ্যালগরিদমের স্ট্রিং নামটিকে এটির প্রথম প্যারামিটার হিসাবে নেয়৷ এটি উপরে তালিকাভুক্ত হ্যাশের পাশাপাশি আপনার 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'

একটি হ্যাশ অবজেক্টের নিম্নলিখিত পদ্ধতি রয়েছে -

আপডেট()
বাইটের মত অবজেক্ট দিয়ে হ্যাশ অবজেক্ট আপডেট করুন। m.update(a); m.update(b) m.update(a+b) এর সমতুল্য।
ডাইজেস্ট()
এখন পর্যন্ত আপডেট() পদ্ধতিতে পাস করা ডেটার ডাইজেস্ট ফেরত দিন।
হেক্সডাইজেস্ট()
একটি ডাইজেস্ট দ্বিগুণ দৈর্ঘ্যের একটি স্ট্রিং অবজেক্ট হিসাবে ফেরত দেওয়া হয়, যেখানে শুধুমাত্র হেক্সাডেসিমেল সংখ্যা থাকে।
কপি()
হ্যাশ বস্তুর একটি অনুলিপি ফেরত দিন। এটি একটি সাধারণ প্রাথমিক সাবস্ট্রিং ভাগ করে নেওয়া ডেটার ডাইজেস্ট গণনা করতে ব্যবহার করা যেতে পারে।

হ্যাশলিব নিম্নলিখিত বৈশিষ্ট্যগুলি প্রদান করে -

অ্যালগরিদম_গ্যারান্টিযুক্ত
সমস্ত প্ল্যাটফর্মে এই মডিউল দ্বারা সমর্থিত হ্যাশ অ্যালগরিদমগুলির নাম সমন্বিত একটি সেট।
অ্যালগরিদম_উপলভ্য
হাশ অ্যালগরিদমের নাম সম্বলিত একটি সেট যা চলমান পাইথন ইন্টারপ্রেটারে উপলব্ধ।
ডাইজেস্ট_সাইজ
বাইটে ফলস্বরূপ হ্যাশের আকার।
block_size
বাইটে হ্যাশ অ্যালগরিদমের অভ্যন্তরীণ ব্লকের আকার।
নাম
এই হ্যাশের ক্যানোনিকাল নাম, সর্বদা ছোট হাতের অক্ষর এবং এই ধরনের আরেকটি হ্যাশ তৈরি করতে new() এর প্যারামিটার হিসাবে সর্বদা উপযুক্ত।

shake_128() এবং shake_256() অ্যালগরিদম 128 বা 256 বিট পর্যন্ত নিরাপত্তার length_in_bits//2 সহ পরিবর্তনশীল দৈর্ঘ্য ডাইজেস্ট প্রদান করে।

BLAKE2 হল RFC 7693-এ সংজ্ঞায়িত একটি ক্রিপ্টোগ্রাফিক হ্যাশ ফাংশন যা দুটি স্বাদে আসে -

  • BLAKE2b, 64-বিট প্ল্যাটফর্মের জন্য অপ্টিমাইজ করা হয়েছে এবং 1 থেকে 64 বাইটের মধ্যে যেকোনো আকারের ডাইজেস্ট তৈরি করে,
  • BLAKE2s, 8- থেকে 32-বিট প্ল্যাটফর্মের জন্য অপ্টিমাইজ করা হয়েছে এবং 1 থেকে 32 বাইটের মধ্যে যেকোনো আকারের ডাইজেস্ট তৈরি করে।

  1. পাইথনে স্ট্যাক এবং সারি হিসাবে তালিকা ব্যবহার করা

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

  3. পাইথন ব্যবহার করে SHA এনকোডিং?

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