সেখানে তথ্য নিরাপত্তা সব আইটি কোম্পানির প্রধান উদ্বেগ এক. আমাদের ডেটা প্রজেক্ট এবং চেক করার জন্য একাধিক হ্যাশিং কৌশল রয়েছে৷
হ্যাশ কি
হ্যাশ একটি ফাংশন যা ইনপুট হিসাবে বাইটের পরিবর্তনশীল দৈর্ঘ্যের ক্রম নেয় এবং এটিকে একটি নির্দিষ্ট দৈর্ঘ্যের অনুক্রমে রূপান্তর করে। যাইহোক, আপনার আসল ডেটা (ইনপুট বাইট) ফিরে পাওয়া সহজ নয়। উদাহরণস্বরূপ, x হল আপনার ইনপুট এবং f হল f হল হ্যাশিং ফাংশন, তারপর f(x) গণনা করা দ্রুত এবং সহজ কিন্তু আবার x পাওয়ার চেষ্টা করা খুবই সময়সাপেক্ষ কাজ।
হ্যাশ ফাংশন থেকে রিটার্ন ভ্যালুকে হ্যাশ, চেকসাম, হ্যাশ ভ্যালু বা মেসেজ ডাইজেস্ট বলা হয়।
আমরা নীচের হিসাবে উপরে সংক্ষিপ্ত করতে পারেন -
ধরুন আপনি "হ্যালো ওয়ার্ল্ড" বার্তাটিকে sha1 হ্যাশ ফাংশনে রূপান্তর করতে চান তাহলে ফলাফল হল:0a4d55a8d778e5022fab701977c5d840bbc486d0,
বাস্তব জীবনের দৃশ্যে, হ্যাশ ফাংশনগুলি ক্রিপ্টোগ্রাফিক অ্যালগরিদম, ডিজিটাল স্বাক্ষর, আঙুলের ছাপ, পাসওয়ার্ড সংরক্ষণ করতে এবং আরও অনেক ক্ষেত্রে ব্যাপকভাবে ব্যবহৃত হয়। পাইথন প্রোগ্রামার হিসেবে, ডাটা বা ফাইলের ডুপ্লিসিটি চেক করার জন্য, যখন আপনি কোনো পাবলিক নেটওয়ার্কের মাধ্যমে ডাটা ট্রান্সমিট করেন, ডাটাবেসে পাসওয়ার্ড সংরক্ষণ করেন ইত্যাদির জন্য আমাদের হ্যাশ ফাংশন দরকার।
দুটি বেশিরভাগ ব্যবহৃত হ্যাশ ফাংশন বা অ্যালগরিদম হল −
-
MD5 - MD5 বা বার্তা ডাইজেস্ট অ্যালগরিদম একটি 128-বিট হ্যাশ মান তৈরি করবে। md5 অ্যালগরিদমের সাথে কয়েকটি নিরাপত্তা সমস্যা রয়েছে তাই আমরা এটি মূলত ডেটা অখণ্ডতা পরীক্ষা করার জন্য ব্যবহার করেছি।
-
SHA - অ্যালগরিদমের SHA গ্রুপের অধীনে একাধিক অ্যালগরিদম রয়েছে, যা ইউ.এস. ফেডারেল ইনফরমেশন প্রসেসিং স্ট্যান্ডার্ড দ্বারা তৈরি করা হয়েছে। এই অ্যালগরিদমগুলি md5 এর তুলনায় অনেক বেশি নিরাপদ এবং তাই ক্রিপ্টোগ্রাফিক অ্যাপ্লিকেশন সহ বিভিন্ন ক্ষেত্রে ব্যাপকভাবে ব্যবহৃত হয়। এই অ্যালগরিদম দ্বারা উত্পন্ন বার্তা 160 বিট থেকে 512 বিট পর্যন্ত।
SHA1
৷SHA হল অ্যালগরিদমের একটি গ্রুপ যেমন – SHA1, SHA224, SHA256, SHA384, SHA512। SHA1 অ্যালগরিদম, 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'}
চলুন sha1 অ্যালগরিদম বোঝার জন্য একটি সহজ প্রোগ্রাম তৈরি করি,
import hashlib hash_obj = hashlib.sha1(b'Hello, Python!') print(hash_obj.hexdigest())
আউটপুট
00d375a3693fde63e9540b91656c6ac5b5341f7c
যাইহোক, আপনি যদি বাইটের ক্রম ফেরত চান, তাহলে আপনাকে hash_obj.diget() ব্যবহার করতে হবে, যেমন −
import hashlib hash_obj = hashlib.sha1(b'Hello, Python!') #To generate, sequence of bytes print(hash_obj.digest())
আউটপুট
b'\x00\xd3u\xa3i?\xdec\xe9T\x0b\x91elj\xc5\xb54\x1f|'
আপনি যদি লক্ষ্য করেন, আমরা যেকোনো স্ট্রিং লিটারেলের আগে 'b' ব্যবহার করেছি, এটি হল স্ট্রিং থেকে বাইট তৈরি করা কারণ হ্যাশিং ফাংশন শুধুমাত্র প্যারামিটার হিসেবে বাইটের একটি ক্রম গ্রহণ করে।
আপনি যদি কনসোল থেকে স্ট্রিংটি পাস করতে চান তবে বাইটের একটি ক্রম অনুসারে স্ট্রিংটিকে এনকোড করতে ভুলবেন না -
import hashlib mystring = input('Enter string to hash: ') hash_obj = hashlib.sha1(mystring.encode()) print(hash_obj.hexdigest())
আউটপুট
Enter string to hash: Hello, TutorialsPoint b20d14ead3e50552fc1f1cd96696b111a163dffa