সেখানে তথ্য নিরাপত্তা সব আইটি কোম্পানির প্রধান উদ্বেগ এক. আমাদের ডেটা প্রজেক্ট এবং চেক করার জন্য একাধিক হ্যাশিং কৌশল রয়েছে৷
হ্যাশ কি
হ্যাশ একটি ফাংশন যা ইনপুট হিসাবে বাইটের পরিবর্তনশীল দৈর্ঘ্যের ক্রম নেয় এবং এটিকে একটি নির্দিষ্ট দৈর্ঘ্যের অনুক্রমে রূপান্তর করে। যাইহোক, আপনার আসল ডেটা (ইনপুট বাইট) ফিরে পাওয়া সহজ নয়। উদাহরণস্বরূপ, x হল আপনার ইনপুট এবং f হল f হল হ্যাশিং ফাংশন, তারপর f(x) গণনা করা দ্রুত এবং সহজ কিন্তু আবার x পাওয়ার চেষ্টা করা খুবই সময়সাপেক্ষ কাজ।
হ্যাশ ফাংশন থেকে রিটার্ন ভ্যালুকে হ্যাশ, চেকসাম, হ্যাশ ভ্যালু বা মেসেজ ডাইজেস্ট বলা হয়।
আমরা নীচের হিসাবে উপরে সংক্ষিপ্ত করতে পারেন -
ধরুন আপনি "হ্যালো ওয়ার্ল্ড" বার্তাটিকে md5 হ্যাশ ফাংশনে রূপান্তর করতে চান তাহলে ফলাফল হল একটি,
বাস্তব জীবনের দৃশ্যে, হ্যাশ ফাংশনগুলি ক্রিপ্টোগ্রাফিক অ্যালগরিদম, ডিজিটাল স্বাক্ষর, আঙুলের ছাপ, পাসওয়ার্ড সংরক্ষণ করতে এবং আরও অনেক ক্ষেত্রে ব্যাপকভাবে ব্যবহৃত হয়। পাইথন প্রোগ্রামার হিসেবে, ডাটা বা ফাইলের ডুপ্লিসিটি চেক করার জন্য, যখন আপনি কোনো পাবলিক নেটওয়ার্কের মাধ্যমে ডাটা ট্রান্সমিট করেন, ডাটাবেসে পাসওয়ার্ড সংরক্ষণ করেন ইত্যাদির জন্য আমাদের হ্যাশ ফাংশন দরকার।
দুটি বেশিরভাগ ব্যবহৃত হ্যাশ ফাংশন বা অ্যালগরিদম হল −
-
MD5 - MD5 বা বার্তা ডাইজেস্ট অ্যালগরিদম একটি 128-বিট হ্যাশ মান তৈরি করবে। md5 অ্যালগরিদমের সাথে কয়েকটি নিরাপত্তা সমস্যা রয়েছে তাই আমরা এটি মূলত ডেটা অখণ্ডতা পরীক্ষা করার জন্য ব্যবহার করেছি।
-
SHA - অ্যালগরিদমের SHA গ্রুপের অধীনে একাধিক অ্যালগরিদম রয়েছে, যা ইউ.এস. ফেডারেল ইনফরমেশন প্রসেসিং স্ট্যান্ডার্ড দ্বারা তৈরি করা হয়েছে। এই অ্যালগরিদমগুলি md5 এর তুলনায় অনেক বেশি নিরাপদ এবং তাই ক্রিপ্টোগ্রাফিক অ্যাপ্লিকেশন সহ বিভিন্ন ক্ষেত্রে ব্যাপকভাবে ব্যবহৃত হয়। এই অ্যালগরিদম দ্বারা উত্পন্ন বার্তা 160 বিট থেকে 512 বিট পর্যন্ত।
MD5
পাইথন স্ট্যান্ডার্ড লাইব্রেরিতে হ্যাশলিব নামে একটি মডিউল রয়েছে, যেটিতে বেশিরভাগ জনপ্রিয় হ্যাশিং অ্যালগরিদম রয়েছে। বেশিরভাগ অ্যালগরিদমগুলি হ্যাশলিব মডিউলের ভিতরে প্রয়োগ করা হয় তবে, যদি আপনার ওপেনএসএসএল ইনস্টল করা থাকে তবে এই অ্যালগরিদমগুলির সাথেও কাজ করার জন্য হ্যাশলিব ব্যবহার করা যেতে পারে৷
প্রথমত, আপনি যদি কোনো হ্যাশিং অ্যালগরিদম ব্যবহার করতে চান, হ্যাশলিব মডিউল আমদানি করুন −
import hashlib
এখন হাশলিব মডিউলে প্রয়োজনীয় অ্যালগরিদম বা কি সমস্ত অ্যালগরিদম বর্তমানে উপলব্ধ রয়েছে তা পরীক্ষা করতে -
>>> print(hashlib.algorithms_available) {'sha3_256', 'sha3_224', 'sha1', 'blake2b', 'sha512', 'dsaEncryption', 'dsaWithSHA', 'DSA', 'md5', 'sha384', 'sha224', 'sha3_384', 'ecdsa-with-SHA1', 'DSA-SHA', 'SHA1', 'md4', 'SHA256', 'MD4', 'sha3_512', 'whirlpool', 'sha256', 'shake_256', 'SHA', 'RIPEMD160', 'shake_128', 'SHA512', 'ripemd160', 'SHA224', 'sha', 'blake2s', 'SHA384', 'MD5'}
হ্যাশলিব মডিউলের মাধ্যমে উপলব্ধ অ্যালগরিদমগুলির উপরের তালিকায় OpenSSL-এর মাধ্যমে অ্যালগরিদমগুলি অন্তর্ভুক্ত রয়েছে৷
যাইহোক, সর্বদা উপলব্ধ অ্যালগরিদমগুলির তালিকা পরীক্ষা করতে, আমরা অ্যালগরিদম_গ্যারান্টিডের মাধ্যমে এটি পরীক্ষা করতে পারি।
>>> print(hashlib.algorithms_guaranteed) {'sha3_512', 'sha256', 'sha3_256', 'shake_256', 'sha3_224', 'sha1', 'blake2b', 'sha512', 'md5', 'shake_128', 'sha384', 'sha224', 'sha3_384', 'blake2s'}
আসুন md5 অ্যালগরিদম -
এর মাধ্যমে একটি সহজ প্রোগ্রাম তৈরি করিকোড
import hashlib hash_obj = hashlib.md5(b'Hello, Python!') print(hash_obj.hexdigest())
আউটপুট
a0af7810eb5fcb84c730f851361de06a
উপরের কোডটি "হ্যালো, পাইথন!" স্ট্রিং ইনপুট হিসাবে এবং সেই স্ট্রিংয়ের HEX ডাইজেস্ট প্রিন্ট করে। Hexdigest হ্যাশ প্রতিনিধিত্ব করে একটি HEX স্ট্রিং প্রদান করে।
যাইহোক, আপনি যদি বাইটের ক্রম ফেরত চান, তাহলে আপনাকে hash_obj.diget() ব্যবহার করতে হবে, যেমন −
import hashlib hash_obj = hashlib.md5(b'Hello, Python!') #To generate, sequence of bytes print(hash_obj.digest())
আউটপুট
b'\xa0\xafx\x10\xeb_\xcb\x84\xc70\xf8Q6\x1d\xe0j'
আপনি যদি লক্ষ্য করেন, আমরা যেকোনো স্ট্রিং লিটারেলের আগে 'b' ব্যবহার করেছি, এটি হল স্ট্রিং থেকে বাইট তৈরি করা কারণ হ্যাশিং ফাংশন শুধুমাত্র প্যারামিটার হিসেবে বাইটের একটি ক্রম গ্রহণ করে।
আপনি যদি কনসোল থেকে স্ট্রিংটি পাস করতে চান তবে বাইটের একটি ক্রম অনুসারে স্ট্রিংটিকে এনকোড করতে ভুলবেন না -
import hashlib mystring = input('Enter string to hash: ') hash_obj = hashlib.md5(mystring.encode()) print(hash_obj.hexdigest())
আউটপুট
Enter string to hash: Hello, TutorialsPoint 9a5d3fad65690dcf44adaec67226abe7