হ্যাশিং (Hashing) কী এবং কীভাবে কাজ করে?
হ্যাশিং হলো একটি দেওয়া কীকে একটি কোডে রূপান্তর করার প্রক্রিয়া। একটি হ্যাশ ফাংশন ডেটাকে একটি নতুন তৈরি হ্যাশ কোড দিয়ে প্রতিস্থাপন করে। অধিক নির্দিষ্টভাবে, হ্যাশিং হলো একটি স্ট্রিং বা ইনপুট কী (ন্যারেটিভ ইনফরমেশন সংরক্ষণের জন্য তৈরি ভেরিয়েবল) নেয়া এবং এটিকে একটি হ্যাশ ভ্যালু দিয়ে সংজ্ঞায়িত করা, যা সাধারণত একটি অ্যালগরিদম দ্বারা নির্ধারিত হয় এবং আসলটির চেয়ে অনেক ছোট স্ট্রিং তৈরি করে।
হ্যাশিং-এর বৈশিষ্ট্য
- হ্যাশিং সাধারণত একটি ওয়ান-ওয়ে ক্রিপ্টোগ্রাফিক ফাংশন। হ্যাশ অরিভার্সিবল (irreversible), তাই হ্যাশিং মেথডের আউটপুট জানলেও ফাইলের কন্টেন্ট পুনরুদ্ধার করা যায় না। এটি দুটি ফাইল একই কিনা সেটি তাদের কন্টেন্ট না জেনেও যাচাই করতে সক্ষম করে।
- তথ্য নিরাপত্তা ও ইন্টারনেট অথেন্টিকেশনে হ্যাশিং ব্যবহার সাধারণ। উদাহরণ: পাসওয়ার্ড ডেটাবেসে নিরাপদে সংরক্ষণ, ফাইল ও ডকুমেন্টের নিরাপত্তা নিশ্চিত করা।
- হ্যাশিং ডেটা স্ট্রাকচার অ্যারে-কে দক্ষতার সাথে খুঁজে বের করতে ও সংরক্ষণ করতে সক্ষম করে।
উদাহরণ
২০,০০০ সংখ্যার তালিকা থেকে একটি নির্দিষ্ট সংখ্যা খুঁজতে হলে প্রতিটি স্ক্যান করা টাইম-কনসামিং। হ্যাশিং দিয়ে কীকে ছোট ফিক্সড-লেন্থ ভ্যালুতে রূপান্তর করলে সার্চ দ্রুত হয়। ১০,০০০ ইংরেজি শব্দের তালিকা থেকে একটি শব্দ আছে কিনা চেক করতে হলে সব শব্দের সাথে তুলনা না করে হ্যাশ কী দিয়ে দ্রুত খুঁজে বের করা যায়।
হ্যাশ টেবিল ও মডুলো অপারেটর
কী ভ্যালুর রেঞ্জ দ্বারা إندেক্স করা একটি অ্যারে হলো হ্যাশ টেবিল। মডুলো অপারেটর ব্যবহার করে কী ভ্যালুর রেঞ্জ পাওয়া যায়। ২০x২০ হ্যাশ টেবিলে আইটেমগুলো (কী, ভ্যালু) ফরম্যাটে সংরক্ষণ করা যায়।
প্রচলিত হ্যাশিং অ্যালগরিদম
MD5, SHA-1, SHA-2, NTLM, LANMAN—আজকাল সবই প্রচলিত। মেসেজ ডাইজেস্ট ৫ ভার্সনে ভাগ, MD5 তৃতীয়। অতীতে MD5 সবচেয়ে জনপ্রিয় হ্যাশিং অ্যালগরিদমের এক। MD5 আউটপুটের জন্য ১২৮ বিট ব্যবহার করে।
কলিশন (Collision)
হ্যাশিং-এ ডেটা ব্লকের প্রতিটি বিট ফিক্সড-সাইজ বিট স্ট্রিং ভ্যালুতে রূপান্তরিত হয়। ফাইলে ডেটা ব্লক থাকে। দুটি ভিন্ন ইনপুট একই হ্যাশ ভ্যালু তৈরি করার রিস্ক থাকে। এটাকে কলিশন (collision) বলা হয়—দুটি ভিন্ন ইনপুট একই হ্যাশ ভ্যালু দিলে ঘটে।