Base64: বাইনারি তথ্য সাদামাটা লেখা হিসেবে
কিছু জায়গা কেবল সাদামাটা লেখাই নেয়: ইমেল, JSON, HTML-র বিশেষক। Base64 যেকোনো তথ্যকে 64টি নিরাপদ অক্ষরে (A–Z, a–z, 0–9, + আর /) বদলে দেয়, তাই তা সেগুলোর ভেতর দিয়ে অবিকল পার হয়ে যেতে পারে। “Hello” দাঁড়ায় SGVsbG8=।
- প্রতি 3 বাইট দাঁড়ায় 4 অক্ষরে, তাই Base64 মূলটির চেয়ে প্রায় 33% বড়।
- শেষের = চিহ্নগুলো ফলটিকে 4 অক্ষরের গুণিতক পর্যন্ত ভরিয়ে দেয়।
- URL-এ নিরাপদ রূপটি + আর /-র বদলে - আর _ ব্যবহার করে, কারণ ওদুটির ওয়েবের ঠিকানায় বিশেষ মানে আছে।
তা ছদ্মকরণ নয়
যে কেউই Base64 ডিকোড করতে পারে; কোনো চাবিই নেই। একটি পাসওয়ার্ড কিংবা অন্য গোপন কথা লুকাতে তা কখনো ব্যবহার করবেন না।
ডেটা URI
একটি ছোট ছবি HTML কিংবা CSS-এ সোজা data:image/png;base64, আর তার পরে তার Base64 লেখা হিসেবে লিখে দেওয়া যায়, যা একটি আলাদা নামিয়ে নেওয়া বাঁচায়। মাপ বেড়ে যাওয়ার কারণে তা কেবল ছোট আইকনেই মানায়। ছবি থেকে Base64 সরঞ্জামটি আপনার হয়ে ডেটা URI বানিয়ে দেয়, কিংবা একটিকে আবার ছবিতে ফিরিয়ে আনে।
URL এনকোডিং আলাদা কিছু
URL (শতকরা) এনকোডিং কেবল সেই অক্ষরগুলোই বদলে দেয়, যেগুলো ওয়েবের ঠিকানায় চলে না কিংবা যাদের বিশেষ মানে আছে, আর প্রত্যেকটির বদলে বসায় % আর তার বাইটের মান। “café & crème” দাঁড়ায় caf%C3%A9%20%26%20cr%C3%A8me: ফাঁকটি %20, & হলো %26, আর é, যা UTF-8-এ দুই বাইট, হলো %C3%A9। বাকি সবই পড়ার মতোই থাকে।
Base64 এনকোড / ডিকোড আর URL এনকোড / ডিকোড দিয়ে লেখা এনকোড আর ডিকোড করুন।
হাতে তিনটি অক্ষর এনকোড করা
Man শব্দটি নিন। তার তিনটি বাইট 77, 97 আর 110, কিংবা বাইনারিতে 01001101 01100001 01101110। Base64 ওই 24 বিটকে ছয়ের চারটি দলে আবার সাজিয়ে নেয়:
010011 010110 000101 101110
19 22 5 46
T W F u
প্রতিটি ছয়-বিটের সংখ্যা A–Z, a–z, 0–9, + আর /-র বর্ণমালা থেকে একটি অক্ষর বেছে নেয়, তাই Man দাঁড়ায় TWFu। ঢোকা তথ্য তিন বাইটের গুণিতক না হলে = চিহ্ন শেষটি ভরিয়ে দেয়।
তা কতটা বড় হয়ে যায়
একটি 30 KB ছবি Base64 হিসেবে প্রায় 40 KB হয়ে যায়। তাই ডেটা URI কয়েক কিলোবাইটের আইকনে মানায়, ছবিতে নয়।
চেনা সমস্যা
- লম্বা লেখায় ডিকোড ব্যর্থ হয়। ইমেল আর কিছু সরঞ্জাম প্রতি 76 অক্ষরে একটি লাইনের ভাঙা ঢুকিয়ে দেয়। ডিকোড করার আগে লাইনের ভাঙাগুলো সরিয়ে দিন।
- - কিংবা _-র মতো অক্ষর ফিরিয়ে দেওয়া হচ্ছে। লেখাটি URL-এ নিরাপদ বর্ণমালা ব্যবহার করে। --র জায়গায় + আর _-র জায়গায় / বসান, কিংবা এমন একটি ডিকোডার নিন যা দুটিই নেয়।
- শেষে = বাদ পড়া। কিছু ব্যবস্থা ভরাটটি ফেলে দেয়। দৈর্ঘ্য চারের একটি গুণিতক হওয়া পর্যন্ত = চিহ্ন জুড়ে দিন।
- ডিকোড করা লেখায় বেখাপ্পা অক্ষর দেখায়। মূল লেখাটি একটি আলাদা অক্ষরের এনকোডিংয়ে ছিল। আজকের বেশির ভাগ লেখাই UTF-8; আগে সেটিই দেখে নিন।