বেস64 এনকোডিং কীভাবে কাজ করে

সুচিপত্র:

বেস64 এনকোডিং কীভাবে কাজ করে
বেস64 এনকোডিং কীভাবে কাজ করে
Anonim

Base64 এনকোডিং বাইনারি ডেটাকে একটি ASCII স্ট্রিং ফর্ম্যাটে রূপান্তর করার একটি প্রক্রিয়া যা সেই বাইনারি ডেটাকে একটি 6-বিট অক্ষর উপস্থাপনায় রূপান্তর করে। এনকোডিংয়ের বেস64 পদ্ধতিটি ব্যবহার করা হয় যখন বাইনারি ডেটা, যেমন ছবি বা ভিডিও, এমন সিস্টেমে প্রেরণ করা হয় যা একটি প্লেইন-টেক্সট (ASCII) বিন্যাসে ডেটা প্রেরণের জন্য ডিজাইন করা হয়েছে৷

বেস64 এনকোডিং কেন ব্যবহার করা হয়?

বেস64 এনকোডিং-এর প্রয়োজনীয়তা সেই সমস্যাগুলি থেকে আসে যা ঘটে যখন মিডিয়া কাঁচা বাইনারি ফর্ম্যাটে পাঠ্য-ভিত্তিক সিস্টেমে প্রেরণ করা হয়৷

যেহেতু টেক্সট-ভিত্তিক সিস্টেমগুলি (ইমেলের মতো) বাইনারি ডেটাকে বিস্তৃত অক্ষর হিসাবে ব্যাখ্যা করে, বিশেষ কমান্ড অক্ষর সহ, মিডিয়া স্থানান্তর করার জন্য প্রেরণ করা বাইনারি ডেটার বেশিরভাগই সেই সিস্টেমগুলির দ্বারা ভুল ব্যাখ্যা করা হয় এবং হারিয়ে যায় বা নষ্ট হয়ে যায় সংক্রমণ প্রক্রিয়া।

Image
Image

এই ধরনের বাইনারি ডেটা এনকোড করার একটি পদ্ধতি যা এই ধরনের ট্রান্সমিশন সমস্যা এড়াতে পারে তা হল বেস64 এনকোডেড ফর্ম্যাটে প্লেইন ASCII টেক্সট হিসাবে পাঠানো। প্লেইন টেক্সট ব্যতীত ডেটা পাঠানোর জন্য এটি MIME স্ট্যান্ডার্ড দ্বারা নিযুক্ত কৌশলগুলির মধ্যে একটি৷

পিএইচপি এবং জাভাস্ক্রিপ্টের মতো অনেক প্রোগ্রামিং ল্যাঙ্গুয়েজ, বেস64 এনকোডিং এবং ডিকোডিং ফাংশন অন্তর্ভুক্ত করে যাতে বেস64 এনকোডিং ব্যবহার করে প্রেরিত ডেটা ব্যাখ্যা করা যায়।

বেস64 এনকোডিং লজিক

Base64 এনকোডিং বাইনারি ডেটাকে 3 পূর্ণ বাইটের 6-বিট সেগমেন্টে বিভক্ত করে এবং ASCII স্ট্যান্ডার্ডে মুদ্রণযোগ্য অক্ষর হিসাবে উপস্থাপন করে। এটি মূলত দুটি ধাপে তা করে৷

প্রথম ধাপ হল বাইনারি স্ট্রিংকে 6-বিট ব্লকে ভাঙ্গা। বেস64 শুধুমাত্র 6 বিট ব্যবহার করে (2^6=64 অক্ষরের সাথে সম্পর্কিত) এনকোড করা ডেটা মুদ্রণযোগ্য এবং মানবভাবে পাঠযোগ্য তা নিশ্চিত করতে। ASCII-এ উপলব্ধ বিশেষ অক্ষরগুলির কোনওটিই ব্যবহার করা হয় না৷

64টি অক্ষর (অতএব নাম বেস64) হল 10 সংখ্যা, 26টি ছোট হাতের অক্ষর, 26টি বড় হাতের অক্ষর পাশাপাশি প্লাস চিহ্ন (+) এবং ফরোয়ার্ড স্ল্যাশ (/)। এছাড়াও একটি 65 তম অক্ষর রয়েছে যা একটি প্যাড নামে পরিচিত, যা সমান চিহ্ন (=)। এই অক্ষরটি ব্যবহার করা হয় যখন বাইনারি ডেটার শেষ অংশে পূর্ণ 6 বিট থাকে না৷

বেস64 এনকোডিং উদাহরণ

উদাহরণস্বরূপ, তিনটি ASCII সংখ্যা 155, 162 এবং 233 নিন। এই তিনটি সংখ্যা 100110111010001011101001-এর একটি বাইনারি স্ট্রীম গঠন করে। একটি বাইনারি ফাইল, একটি চিত্রের মতো, একটি বাইনারি স্ট্রীম রয়েছে যা দশ হাজার বা শত শত চলমান থাকে। এবং একটি।

A Base64 এনকোডার বাইনারি স্ট্রীমকে ছয়টি অক্ষরের গ্রুপিংয়ে ভাগ করে শুরু করে: 100110 111010 001011 101001। এই গ্রুপগুলির প্রতিটি 38, 58, 11 এবং 41 সংখ্যায় অনুবাদ করে।

একটি ছয়-অক্ষরের বাইনারি স্ট্রীম বাইনারি (বা ভিত্তি-2) থেকে দশমিক (বেস-10) অক্ষরের মধ্যে রূপান্তরিত করে যার অবস্থানগত বর্গক্ষেত্রের সাথে বাইনারি অনুক্রমের একটি 1 দ্বারা উপস্থাপিত প্রতিটি মানকে বর্গ করে।ডান থেকে শুরু করে বাম দিকে সরানো এবং শূন্য দিয়ে শুরু করে, বাইনারি স্ট্রীমের মান 2^0, তারপর 2^1, তারপর 2^2, তারপর 2^3, তারপর 2^4, তারপর 2^5।

এটি দেখার আরেকটি উপায় এখানে। বাম দিক থেকে শুরু করে, প্রতিটি অবস্থানের মূল্য 1, 2, 4, 8, 16 এবং 32। যদি বাইনারি নম্বরের স্লটে 1 থাকে, আপনি সেই মানটি যোগ করুন; যদি এটির স্লটে একটি 0 থাকে তবে আপনি তা করবেন না। বাইনারি স্ট্রিং 100110 দশমিক সংখ্যা 38 এ রূপান্তরিত হয়: 02^01 + 12^1 + 12^2 + 02^3 + 02^4 + 12^5=0+2 +4+0+0+32।

Base64 এনকোডিং এই বাইনারি স্ট্রিংটি নেয় এবং এটিকে 6-বিট মান 38, 58, 11 এবং 41 এ ভেঙ্গে দেয়।

অবশেষে, বেস64 এনকোডিং টেবিল ব্যবহার করে এই সংখ্যাগুলি ASCII অক্ষরে রূপান্তরিত হয়। এই উদাহরণের 6-বিট মানগুলি ASCII অনুক্রমে অনুবাদ করে m6Lp.

বেস64 রূপান্তর টেবিল ব্যবহার করে:

  • 38 হল m
  • 58 হল 6
  • 11 হল L
  • 41 হল p

এই দ্বি-পদক্ষেপ প্রক্রিয়াটি এনকোড করা সম্পূর্ণ বাইনারি স্ট্রিংটিতে প্রয়োগ করা হয়।

এনকোড করা ডেটা সঠিকভাবে প্রিন্ট করা যায় এবং কোনো মেল সার্ভারের লাইনের দৈর্ঘ্যের সীমা অতিক্রম না করে তা নিশ্চিত করার জন্য, লাইনের দৈর্ঘ্য 76 অক্ষরের নিচে রাখতে নতুন লাইন অক্ষর সন্নিবেশ করা হয়। নতুন লাইনের অক্ষরগুলি অন্যান্য সমস্ত ডেটার মতো এনকোড করা হয়েছে৷

বেস64 এনকোডিংয়ের সম্পূর্ণ উদ্দেশ্য, 3-বাইট বাইনারি সেগমেন্ট সংরক্ষণের জন্য প্যাডিং যুক্ত করা থেকে শুরু করে বেস64 টেবিল ব্যবহার করে বাইনারিকে টেক্সটে রূপান্তর করা পর্যন্ত, প্রেরিত বাইনারি তথ্যের অখণ্ডতা রক্ষা করা।

বেস64 এনকোডিং টেবিল

নিম্নলিখিত টেবিলটি বেস64 এনকোডিং-এ ব্যবহৃত 64টি অক্ষরকে অনুবাদ করে৷

বেস64 এনকোডিং টেবিল
মান চর মান চর মান চর মান চর
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i ৫০ y
3 D 19 T ৩৫ j 51 z
4 E 20 U 36 k 52 0
5 F ২১ V 37 l 53 1
6 জি 22 W 38 মি 54 2
7 H 23 X 39 55 3
8 আমি 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L ২৭ b 43 r 59 7
12 M ২৮ c 44 s 60 8
13 N ২৯ d 45 t 61 9
14 30 e 46 u 62 +
15 P 31 f 47 v 63 /

এন্ডগেম সমাধান করা

এনকোডিং প্রক্রিয়ার শেষে, একটি সমস্যা হতে পারে। বাইটে মূল ডেটার আকার যদি তিনের একাধিক হয়, সবকিছু ঠিকঠাক কাজ করে। যদি এটি না হয়, তাহলে খালি বাইট থাকতে পারে। সঠিক এনকোডিংয়ের জন্য, বাইনারি ডেটার ঠিক 3-বাইট প্রয়োজন৷

3-বাইট গ্রুপ তৈরি করতে 0 এর মান সহ পর্যাপ্ত বাইট যোগ করা সমাধান। যদি ডেটার জন্য একটি অতিরিক্ত বাইট ডেটার প্রয়োজন হয় তবে এই ধরনের দুটি মান যুক্ত করা হয়, দুটি অতিরিক্ত বাইটের জন্য একটি যুক্ত করা হয়৷

অবশ্যই, নিচের এনকোডিং টেবিলটি ব্যবহার করে এই কৃত্রিম ট্রেলিং '0'গুলিকে এনকোড করা যাবে না। তাদের অবশ্যই একটি 65 তম অক্ষর দ্বারা প্রতিনিধিত্ব করা উচিত। বেস64 প্যাডিং অক্ষরটি সমান চিহ্ন (=) এবং এনকোড করা ডেটার শেষে স্থাপন করা হয়।

প্রস্তাবিত: