এনকোডিং বনাম এনক্রিপশন বনাম হ্যাশিং
এনকোডিং, এনক্রিপশন এবং হ্যাশিং বিষয় তিনটি নিয়ে অনেক সময় ধাঁধায় পড়ে যেতে হয়। এদের দেখে মনে হয় এরা একই কাজ করে, কিন্তু প্রকৃতপক্ষে এদের মাঝে পার্থক্য বিদ্যমান। চলুন একে একে দেখে নেয়া যাক কোনটি কী কাজ করে।
এনকোডিং
এনকোডিং-এর কাজ হলো উপাত্ত/ডেটা অন্য একটি ভিন্ন সিস্টেমের উপযোগী করে তোলা। ঐ সিস্টেম যেন উপাত্ত সঠিকভাবে ধারণ করতে পারে ও তা ব্যবহার উপযোগী রাখে তা নিশ্চিত করাই এনকোডিং-এর প্রধান কাজ। উদাহরণসরূপ ইমেইলের মাধ্যমে বাইনারি উপাত্ত পাঠানো অথবা ওয়েবপেজে কোনো বিশেষ ক্যারেক্টার প্রদর্শনের মতো কাজে এনকোডিং ব্যবহার করা হয়।
এখানে উপাত্তকে কোনোরূপ গোপন রাখা কোনো উদ্দেশ্য নয়। বরং এখানে উদ্দেশ্য হলো উপাত্ত যেন ভিন্ন ঐ সিস্টেমেও ব্যবহার উপযোগী থাকে।
এজন্য এনকোডিং উপাত্তকে ঐ সিস্টেমে ব্যবহারযোগ্য একটি ফরম্যাটে রূপান্তর করে। একাজে সহজলভ্য অ্যালগরিদম ব্যবহার করা হয় যেন সহজেই আবার উপাত্তকে পূর্বাবস্থায় ফেরত নেওয়া যায়। কোনো এনকোডেড উপাত্ত ডিকোড করতে অর্থাৎ পূর্বাবস্থায় ফেরত নিতে শুধু এনকোড করার সময় কোন অ্যালগরিদম ব্যবহার করা হয়েছিল তা জানলেই হয়। এখানে কোনো চাবি (key) ব্যবহারের প্রয়োজন হয় না।
এনকোডিং অ্যালগরিদমের উদাহরণঃ আসকি, ইউনিকোড, বেজ৬৪ ইত্যাদি।
এনক্রিপশন
এনক্রিপশনের প্রধান উদ্দেশ্য হলো উপাত্তকে গোপন রাখা। উদাহরণস্বরূপ গোপন পত্র প্রদান অথবা ইন্টারনেটের মাধ্যমে নিরাপদে পাসওয়ার্ড আদান-প্রদান। এখানে অন্যদের নিকট হতে তথ্য গোপন রাখা এবং কাঙ্ক্ষিত প্রাপকের কাছে উপাত্ত নিরাপদে পাঠানোই প্রধান উদ্দ্যেশ। উপাত্তের ব্যবহারযোগ্যতা এখানে মূখ্য বিষয় নয়। এখানে মূখ্য বিষয় হলো কাঙ্ক্ষিত ব্যক্তিই যেন উপাত্ত ব্যবহার করতে পারে, অন্যরা যেন উপাত্ত ব্যবহারে ব্যর্থ হয়।
এনক্রিপশন উপাত্তকে এমন একটি ফরম্যাটে রূপান্তর করে যেন বিশেষ চাবি(key) ব্যতীত উপাত্ত ডিক্রিপ্ট করা তথা পূর্বাবস্থায় ফেরত নেয়া সম্ভব না হয়। এই চাবি শুধুমাত্র এনক্রিপশনকারী এবং কাঙ্ক্ষিত পাপ্রক যিনি উপাত্ত ডিক্রিপ্ট করবেন শুধু তিনিই জানেন। ফলে অন্য কোনো ব্যক্তি সেই এনক্রিপটেড উপাত্ত পেলেও তা ডিক্রিপ্ট করতে পারে না। ফলে ডেটার গোপনীয়তা বজায় থাকে।
এনক্রিপশন অ্যালগরিদমের উদাহরণঃ এইএস (aes), আরএসএ ইত্যাদি।
হ্যাশিং
হ্যাশিং উপাত্তকে এমন একটি ফরম্যাটে রূপান্তর করে যেন তা আর পূর্বাবস্থায় ফেরত নেয়া সম্ভব না হয়। হ্যাশিং অ্যালগরিদম একটি ইনপুট নেয় এবং একটি স্ট্রিং (হ্যাশ) আউটপুট দেয়। এক্ষেত্রে নিম্নোক্ত বিষয়গুলো নিশ্চিত করা হয়।
- একই ইনপুটের জন্য সর্বদা একই আউটপুট হবে।
- ভিন্ন ইনপুটের জন্য কখোনোই একই আউটপুট হবে না।
- আউটপুট হ্যাশ থেকে কোনোভাবেই ইনপুট উপাত্ত উদ্ধার করা যাবে না।
- ইনপুট উপাত্ত পরিবর্তন করা হলে আউটপুট হ্যাশেও পরিবর্তন হবে।
হ্যাশ অ্যালগরিদমের উদাহরণঃ শা৫২২ (sha522), এমডি৫ ইত্যাদি।
সারাংশ
এনকোডিং উপাত্তের ব্যবহারযোগ্যতা নিশ্চিত করতে ব্যবহৃত হয়। এনকোডেড উপাত্ত ডিকোড করতে শুধু এনকোডিং অ্যালগরিদম জানার প্রয়োজন হয়।
এনক্রিপশন উপাত্তের গোপনীয়তা নিশ্চিত করতে ব্যবহার করা হয়। এনক্রিপটেড উপাত্ত ডিক্রিপ্ট করতে এনক্রিপশন অ্যালগরিদম এবং গোপন চাবি প্রয়োজন হয়।
হ্যাশিং উপাত্তের ইন্টেগ্রিটি (integrity) নিশ্চিত করতে ব্যবহার করা হয়। হ্যাশ আউটপুট থেকে ইনপুট উপাত্ত উদ্ধার করা সম্ভব নয়।