Base64 এনকোড ও ডিকোড করুন মুহূর্তেই
Base64 হলো কম্পিউটিং জগতের একটা মৌলিক এনকোডিং পদ্ধতি, যা বাইনারি ডেটাকে নিরাপদে টেক্সট আকারে প্রকাশ করার কাজে ব্যবহৃত হয়। API নিয়ে কাজ করা, নেটওয়ার্ক রিকোয়েস্ট ডিবাগ করা, JWT টোকেন বোঝা, বা HTML-এ ছবি এমবেড করা — এসব ক্ষেত্রে Base64 বারবার সামনে চলে আসে। এই টুলটি এক ক্লিকেই যেকোনো টেক্সটকে Base64-এ রূপান্তর করে দেয়, আর যেকোনো Base64 স্ট্রিংকে আবার আসল টেক্সটে ফিরিয়ে আনে।
Base64 আসলে কী
Base64 হলো একটা বাইনারি-থেকে-টেক্সট এনকোডিং পদ্ধতি, যা মাত্র ৬৪টা মুদ্রণযোগ্য ASCII অক্ষর দিয়ে বাইনারি ডেটা প্রকাশ করে: ২৬টা বড়হাতের অক্ষর (A-Z), ২৬টা ছোটহাতের অক্ষর (a-z), ১০টা সংখ্যা (0-9), আর সেইসাথে + এবং / চিহ্ন দুটো। ৬৫তম একটা অক্ষর, =, ব্যবহার করা হয় প্যাডিং হিসেবে।
"Base64" নামটা এসেছে এই কারণেই যে এনকোডিংটা ৬৪টা আলাদা অক্ষর ব্যবহার করে। প্রতিটা Base64 অক্ষর প্রকাশ করে ডেটার ৬ বিট (2^6 = 64)। যেহেতু একটা বাইট হলো ৮ বিট, তাই ইনপুটের প্রতি ৩ বাইট ঠিক ৪টা Base64 অক্ষরে রূপান্তরিত হয়।
Base64 কেন প্রয়োজন হলো
অনেক পুরনো টেক্সট-ভিত্তিক প্রোটোকল আর সিস্টেম শুধু ASCII টেক্সট সামলাতে পারে, যথেচ্ছ বাইনারি বাইট নয়। ইমেইল (SMTP), URL, HTTP হেডার, XML — এসব সবই টেক্সট নিরাপদে সামলায়। কিন্তু বাইনারি ডেটা — যেমন ছবি, অডিও ফাইল, ক্রিপ্টোগ্রাফিক কী বা কমপ্রেস করা ডেটা — এনকোডিং ছাড়া এই চ্যানেলগুলো দিয়ে নিরাপদে পাঠানো যায় না।
Base64 এই সমস্যা সমাধান করে যেকোনো বাইনারি ডেটাকে ASCII অক্ষরের এমন একটা উপসেটে রূপান্তর করে, যা সব টেক্সট সিস্টেমই নিরাপদে সংরক্ষণ ও প্রেরণ করতে পারে।
সাধারণ ব্যবহার
ডেটা URI: আলাদা ফাইল রিকোয়েস্ট ছাড়াই ছবি সরাসরি HTML বা CSS-এ এমবেড করা যায়। একটা ডেটা URI শুরু হয় data:image/png;base64, দিয়ে, তারপর আসে Base64-এনকোড করা ছবির ডেটা।
ইমেইল অ্যাটাচমেন্ট (MIME): ইমেইল অ্যাটাচমেন্ট MIME প্রোটোকলে পাঠানোর জন্য Base64-এনকোড করা হয়।
JSON API: বাইনারি ডেটা (ছবি, ফাইল, ক্রিপ্টোগ্রাফিক সিগনেচার) JSON-এ পাঠাতে হলে অবশ্যই Base64-এনকোড করতে হয়, কারণ JSON শুধু টেক্সট সামলাতে পারে।
HTTP বেসিক অথেন্টিকেশন: Authorization হেডার ক্রেডেনশিয়াল পাঠায় Base64(username:password) আকারে। এটা একা যথেষ্ট নিরাপদ নয় — HTTPS তখনও প্রয়োজন।
JWT টোকেন: JSON Web Token তিনটা Base64URL-এনকোড করা অংশ নিয়ে গঠিত (হেডার, পেলোড, সিগনেচার), যেগুলো ডট দিয়ে আলাদা করা।
ডেটাবেজ স্টোরেজ: টেক্সট-ভিত্তিক স্টোরেজ ফরম্যাটে (যেমন কিছু NoSQL ডেটাবেজ বা কনফিগ ফাইল) সংরক্ষিত বাইনারি ব্লব প্রায়ই Base64-এনকোড করা থাকে।
Base64 বনাম Base64URL
স্ট্যান্ডার্ড Base64 ব্যবহার করে + আর / চিহ্ন, যেগুলো URL-এর মধ্যে বিশেষ অর্থ বহন করে। Base64URL এই দুটোকে - আর _ দিয়ে প্রতিস্থাপন করে, যাতে এনকোড করা ডেটা URL-নিরাপদ হয়। JWT টোকেন Base64URL ব্যবহার করে। = প্যাডিং অক্ষরটাও প্রায়ই Base64URL-এ বাদ দেওয়া হয়।
নিরাপত্তা নিয়ে একটা কথা
Base64 কোনো এনক্রিপশন নয়। যে কেউ Base64-এনকোড করা ডেটা পেলে যেকোনো Base64 ডিকোডার দিয়ে সেটা সাথে সাথে ডিকোড করে ফেলতে পারবে। সংবেদনশীল তথ্য "লুকানোর" জন্য Base64 ব্যবহার করবেন না — সেজন্য প্রকৃত এনক্রিপশন ব্যবহার করুন।
টুলটা কীভাবে ব্যবহার করবেন
এনকোড ফিল্ডে টেক্সট পেস্ট করলে সাথে সাথে তার Base64 রূপ পাবেন, অথবা ডিকোড ফিল্ডে একটা Base64 স্ট্রিং পেস্ট করলে আসল টেক্সট ফিরে পাবেন — দুটো দিকই আপনি টাইপ করার সাথে সাথে লাইভ আপডেট হয়। কোনো JWT-র পেলোড দ্রুত পরীক্ষা করতে, একটা ডেটা URI আসলে কী ধারণ করছে তা যাচাই করতে, বা URL প্যারামিটার বা JSON ফিল্ডের মতো টেক্সট-শুধু চ্যানেল দিয়ে নিরাপদে পাঠানোর জন্য কোনো মান তৈরি করতে এটা দারুণ কাজে দেয়।
Base64 এনকোডিং ধাপে ধাপে কীভাবে কাজ করে
Base64 বাইনারি ডেটাকে টেক্সটে রূপান্তর করে একটা সহজ প্রক্রিয়ার মধ্য দিয়ে। প্রথমে বাইনারি ডেটাকে ৩-বাইট, অর্থাৎ ২৪-বিটের খণ্ডে ভাগ করা হয়। প্রতিটা ২৪-বিট খণ্ডকে চারটা ৬-বিট গ্রুপে ভাগ করা হয়। প্রতিটা ৬-বিট মান, যা ০ থেকে ৬৩ পর্যন্ত হতে পারে, Base64 বর্ণমালায় খোঁজা হয়, যেখানে A=0, B=1, চলতে থাকে Z=25 পর্যন্ত, a=26 থেকে z=51, 0=52 থেকে 9=61, +=62 আর /=63। ইনপুট যদি ৩ বাইটের ঠিক গুণিতক না হয়, তাহলে শেষ গ্রুপ সম্পূর্ণ করতে = প্যাডিং অক্ষর যোগ করা হয়। যেহেতু ৩ বাইট হয়ে যায় ৪টা Base64 অক্ষর, তাই এনকোডিং ডেটার আকার প্রায় ৩৩ শতাংশ বাড়িয়ে দেয় — ১ মেগাবাইটের একটা বাইনারি ফাইল Base64-এ এনকোড করলে হয়ে যায় প্রায় ১.৩৭ মেগাবাইটের টেক্সট।
ডেটা URI ও ইনলাইন ছবি
ওয়েবে Base64-এর সবচেয়ে দৃশ্যমান ব্যবহারগুলোর একটা হলো ডেটা URI, যা একটা ফাইলকে আলাদা ফাইল হিসেবে রেফারেন্স না করে সরাসরি HTML বা CSS-এ এমবেড করার সুযোগ দেয়, data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA... এমন একটা রূপে। এতে করে সেই রিসোর্সের জন্য আলাদা একটা HTTP রিকোয়েস্ট আর লাগে না, যা ছোট আইকন আর ছবির জন্য পারফরম্যান্স বাড়াতে পারে। তবে Base64 ডেটাকে যে পেজে এমবেড করা হয়েছে তা থেকে আলাদাভাবে ক্যাশে করা যায় না, আর প্রায় ৩৩ শতাংশ আকার বেড়ে যাওয়ার কারণে বড় ছবির জন্য এই পদ্ধতি অদক্ষ, যে কারণে এটা সাধারণত ছোট অ্যাসেটের জন্যই সংরক্ষিত থাকে।
JWT টোকেন ও Base64URL
JSON Web Token একটা বিশেষ রূপ ব্যবহার করে, যার নাম Base64URL, যা + আর / চিহ্ন — যেগুলো URL-এর ভেতরে বিশেষ অর্থ বহন করে — যথাক্রমে - আর _ দিয়ে প্রতিস্থাপন করে, আর সাধারণত = প্যাডিং সম্পূর্ণভাবে বাদ দেয়। একটা JWT দেখতে তিনটা ডট দিয়ে আলাদা করা অংশের মতো — হেডার, পেলোড আর সিগনেচার — প্রতিটাই একটা Base64URL-এনকোড করা ডেটার খণ্ড, যে কারণে একটা JWT আর কোনো অতিরিক্ত এস্কেপিং ছাড়াই সরাসরি একটা URL বা HTTP হেডারে নিরাপদে বসিয়ে দেওয়া যায়।
ইমেইলে Base64
ইমেইলের জন্য MIME স্ট্যান্ডার্ড ঠিক করে দেয় বার্তার মূল অংশ আর অ্যাটাচমেন্ট কীভাবে প্রেরণের জন্য এনকোড করা উচিত। টেক্সট-ভিত্তিক কনটেন্ট সাধারণত quoted-printable নামে একটা ভিন্ন পদ্ধতি ব্যবহার করে, আর বাইনারি অ্যাটাচমেন্ট ব্যবহার করে Base64। আপনি যখন কোনো ইমেইলে একটা PDF অ্যাটাচ করেন, আপনার ইমেইল ক্লায়েন্ট সেটা পাঠানোর আগে Base64-এ এনকোড করে নেয়, আর প্রাপকের ক্লায়েন্ট সেটা আবার আসল ফাইলে ডিকোড করে ফেলে — দুই পক্ষের কাছেই পুরো ব্যাপারটা অদৃশ্যভাবে ঘটে যায়।
ব্যক্তিগত ও তাৎক্ষণিক
এনকোডিং আর ডিকোডিং সম্পূর্ণভাবে আপনার ব্রাউজারে চলে, জাভাস্ক্রিপ্টের বিল্ট-ইন btoa আর atob ফাংশন ব্যবহার করে, তাই ফলাফল আসে তাৎক্ষণিকভাবে, আর আপনি যা এনকোড বা ডিকোড করেন তার কিছুই কখনো কোথাও পাঠানো হয় না।
বেস64 FAQ
- Base64 কি?
- Base64 হল একটি এনকোডিং স্কিম যা 64টি অক্ষর (A-Z, a-z, 0-9, +, /) ব্যবহার করে বাইনারি ডেটাকে ASCII টেক্সটে রূপান্তর করে। এটি ইমেল বা JSON এর মতো শুধুমাত্র পাঠ্য চ্যানেলের মাধ্যমে নিরাপদে বাইনারি ডেটা প্রেরণ করতে ব্যবহৃত হয়।
- Base64 এনক্রিপশন কি?
- নং বেস64 একটি এনকোডিং, এনক্রিপশন নয়। যে কেউ অবিলম্বে একটি Base64 স্ট্রিং ডিকোড করতে পারেন। সংবেদনশীল ডেটা লুকানোর জন্য এটি ব্যবহার করবেন না।
- Base64 কি জন্য ব্যবহার করা হয়?
- এইচটিএমএল/সিএসএস (ডেটা ইউআরআই) এ ছবি এম্বেড করা, ইমেল সংযুক্তি (MIME) এনকোড করা, JSON-এ বাইনারি ডেটা সংরক্ষণ করা, HTTP বেসিক প্রমাণীকরণে শংসাপত্র প্রেরণ করা এবং URL-এ বাইনারি ডেটা এনকোড করা।