যদি ইন্টারনেট তথ্য হাইওয়ে হয় তবে ইমেলের পথটি একটি সংকীর্ণ র্যাভিন। শুধুমাত্র খুব ছোট গর্ত পাস করতে পারেন।
ইমেল ট্রান্সপোর্ট সিস্টেম শুধুমাত্র প্লেইন ASCII টেক্সট জন্য ডিজাইন করা হয়। অন্যান্য ভাষা বা ইচ্ছাকৃত ফাইল টেক্সট পাঠানোর চেষ্টা করা হয় র্যাভাইন মাধ্যমে একটি ট্রাক পাওয়ার মত।
কিভাবে বড় ট্রাক Ravine মাধ্যমে যেতে না?
তাহলে কিভাবে আপনি একটি ছোট ravine মাধ্যমে একটি বড় ট্রাক পাঠাতে? আপনাকে এক প্রান্তে টুকরো টুকরা টুকরো টুকরো করে টুকরা টুকরো টুকরো করে টেনে নিয়ে যাওয়া, এবং অন্যদিকে টুকরো টুকরা থেকে ট্রাকটি পুনর্নির্মাণ করা।
আপনি ইমেল মাধ্যমে একটি ফাইল সংযুক্তি পাঠাতে যখন একই ঘটে। বাইনারি তথ্য এনকোডিং নামে পরিচিত একটি প্রক্রিয়াতে ASCII পাঠ্য রূপান্তরিত হয়, যা সমস্যা ছাড়াই ইমেলে প্রেরণ করা যেতে পারে। প্রাপকের শেষে, তথ্য ডিকোড করা হয় এবং মূল ফাইলটি পুনঃনির্মাণ করা হয়।
সাধারণ ASCII পাঠ্য হিসাবে নির্বিচারে ডেটা এনকোড করার পদ্ধতিটি হল বেস 64। এটি প্লেইন টেক্সট ছাড়া অন্য তথ্য পাঠানোর জন্য MIME স্ট্যান্ডার্ড দ্বারা নিযুক্ত কৌশলগুলির মধ্যে একটি।
রেসকিউ থেকে বেস 64
বেস 64 এনকোডিং তিনটি বাইট নেয়, প্রতিটি আটটি বিট রয়েছে এবং এএসসিআইআই মানের চারটি মুদ্রণযোগ্য অক্ষর হিসাবে তাদের প্রতিনিধিত্ব করে। এটা মূলত দুই ধাপে যে কাজ করে।
প্রথম পদক্ষেপটি তিনটি বাইটকে ছয় বিটের চার নম্বর রূপে রূপান্তর করা। ASCII মান প্রতিটি অক্ষর সাত বিট গঠিত। এনভোডেড ডেটা মুদ্রণযোগ্য এবং মানবিক পাঠযোগ্য হওয়ার জন্য বেজ 64 শুধুমাত্র 6 বিট ব্যবহার করে (2 ^ 6 = 64 অক্ষরের সাথে সম্পর্কিত)। ASCII পাওয়া বিশেষ অক্ষর ব্যবহার করা হয় না।
64 টি অক্ষর (অতএব নামটি বেস 64) 10 সংখ্যা, 26 ছোট হাতের অক্ষর, 26 বড় হাতের অক্ষর পাশাপাশি '+' এবং '/'।
উদাহরণস্বরূপ, তিনটি বাইট 155, 162 এবং 233, সংশ্লিষ্ট (এবং ভীতিকর) বিট স্ট্রিম 100110111010001011101001, যা পরিবর্তে 6-বিট মান 38, 58, 11 এবং 41 এর সাথে সম্পর্কিত।
এই সংখ্যা Base64 এনকোডিং টেবিল ব্যবহার করে দ্বিতীয় ধাপে ASCII অক্ষর রূপান্তরিত করা হয়। আমাদের উদাহরণের 6 বিট মান ASCII ক্রম "m6Lp" তে অনুবাদ করে।
- 155 -> 10011011
- 162 -> 10100010
- 233 -> 11101001
- 100110 -> 38
- 111010 -> 58
- 001011 -> 11
- 101001 -> 41
- 38 -> মি
- 58 -> 6
- 11 -> এল
- 41 -> পি
এই দুই ধাপে প্রক্রিয়া এনকোড করা হয় যে বাইট সমগ্র ক্রম প্রয়োগ করা হয়। এনকোড করা ডেটা সঠিকভাবে মুদ্রণ করা যেতে পারে এবং কোনও মেল সার্ভারের লাইনের দৈর্ঘ্য সীমা অতিক্রম করে না তা নিশ্চিত করার জন্য, 76 অক্ষরের নীচে লাইনের দৈর্ঘ্য রাখতে নতুন লাইনগুলি সন্নিবেশ করা হয়। নতুন লাইন অক্ষর সব অন্যান্য তথ্য মত এনকোড করা হয়।
Endgame সমাধান
এনকোডিং প্রক্রিয়া শেষে, আমরা একটি সমস্যা হতে পারে। বাইটে মূল ডাটা আকার তিনটি একাধিক হয়, সবকিছু জরিমানা কাজ করে। যদি না হয়, আমরা এক বা দুটি 8-বিট বাইটের সাথে শেষ করতে পারি। যথাযথ এনকোডিংয়ের জন্য, আমাদের ঠিক তিনটি বাইট দরকার।
সমাধানটি 3-বাইট গোষ্ঠী তৈরি করতে '0' এর মান সহ যথেষ্ট বাইট যোগ করা। যদি আমাদের কাছে এক অতিরিক্ত বাইট তথ্য থাকে তবে দুইটি মান যুক্ত করা হয়, দুটি অতিরিক্ত বাইটের জন্য যুক্ত করা হয়।
অবশ্যই, এই কৃত্রিম পেছনে '0 এর নিচে এনকোডিং টেবিল ব্যবহার করে এনকোড করা যাবে না। তারা একটি 65th চরিত্র দ্বারা প্রতিনিধিত্ব করা আবশ্যক।
Base64 প্যাডিং চরিত্র '='। স্বাভাবিকভাবেই, এটি কেবল এনকোড হওয়া ডেটা শেষে প্রদর্শিত হতে পারে।
বেস 64 এনকোডিং টেবিল
| মান | গৃহস্থালির কাজ | মান | গৃহস্থালির কাজ | মান | গৃহস্থালির কাজ | মান | গৃহস্থালির কাজ | |||
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | একজন | 16 | প্রশ্নঃ | 32 | ছ | 48 | W | |||
| 1 | বি | 17 | আর | 33 | জ | 49 | এক্স | |||
| 2 | সি | 18 | এস | 34 | আমি | 50 | Y | |||
| 3 | ডি | 19 | টি | 35 | ঞ | 51 | z- র | |||
| 4 | ই | 20 | ইউ | 36 | ট | 52 | 0 | |||
| 5 | এফ | 21 | ভী | 37 | ঠ | 53 | 1 | |||
| 6 | জি | 22 | ওয়াট | 38 | মি | 54 | 2 | |||
| 7 | এইচ | 23 | এক্স | 39 | এন | 55 | 3 | |||
| 8 | আমি | 24 | ওয়াই | 40 | ণ | 56 | 4 | |||
| 9 | জে | 25 | জেড | 41 | পি | 57 | 5 | |||
| 10 | কে | 26 | একটি | 42 | কুই | 58 | 6 | |||
| 11 | এল | 27 | খ | 43 | R | 59 | 7 | |||
| 12 | এম | 28 | গ | 44 | গুলি | 60 | 8 | |||
| 13 | এন | 29 | ঘ | 45 | টি | 61 | 9 | |||
| 14 | হে | 30 | ই | 46 | তোমার দর্শন লগ করা | 62 | + | |||
| 15 | পি | 31 | চ | 47 | বনাম | 63 | / |




