এনকোড / ডিকোড
টাইপ করার সঙ্গে সঙ্গে Base64, Base64URL, URL পারসেন্ট-এনকোডিং, HTML এন্টিটি ও হেক্স এনকোড বা ডিকোড করুন, সম্পূর্ণ UTF-8 সমর্থনসহ।
আপনি যা লেখেন তার কিছুই সংরক্ষিত হয় না - একই অনুরোধে রূপান্তর করে ফেরত দেওয়া হয়।
টাইপ করার সঙ্গে সঙ্গে Base64, Base64URL, URL পারসেন্ট-এনকোডিং, HTML এন্টিটি ও হেক্স এনকোড বা ডিকোড করুন, সম্পূর্ণ UTF-8 সমর্থনসহ।
আপনি যা লেখেন তার কিছুই সংরক্ষিত হয় না - একই অনুরোধে রূপান্তর করে ফেরত দেওয়া হয়।
লগে একটি টোকেন, রিডাইরেক্টে কুয়েরি স্ট্রিং, & ভরা একটি ইমেল: কাজে এনকোড করা টেক্সট সব জায়গায় দেখা যায়। এখানে পেস্ট করুন, ফরম্যাট বেছে নিন, আর টাইপ করার সাথে সাথে এনকোড বা ডিকোড করা ফল দেখুন।
JSON Web Token হলো ডট দিয়ে জোড়া তিনটি Base64URL অংশ: হেডার, পেলোড ও সিগনেচার। মাঝের অংশটি পেস্ট করুন, Base64URL বেছে ডিকোড করুন, তাহলে JSON ক্লেম দেখবেন, যেমন ইউজার id ও exp মেয়াদ শেষের সময় (একটি Unix টাইমস্ট্যাম্প, যা Unix টাইমস্ট্যাম্প কনভার্টারে পড়া যায়)। ডিকোড করা মানে যাচাই নয়: JWT-এর পেলোড যে কেউ পড়তে পারে, আর সার্ভারে সিগনেচার যাচাই-ই প্রমাণ করে এটি বদলানো হয়নি।
প্যাডিং বাদ দেওয়া Base64, যা কিছু সিস্টেম জায়গা বাঁচাতে করে, কড়া ডিকোডারে ব্যর্থ হয়; এই টুল বাদ পড়া = চিহ্ন যোগ করে এবং আপনাকে জানায়। অনেক সার্ভার কুয়েরি স্ট্রিংয়ের + কে স্পেস হিসেবে পড়ে, তাই লিংকে এনকোড ছাড়া পেস্ট করা Base64 মান নষ্ট হয়ে পৌঁছায়; এটিকে URL কম্পোনেন্ট হিসেবে এনকোড করুন বা Base64URL ব্যবহার করুন। দুবার এনকোড করা টেক্সট %2520 বা & হিসেবে দেখা যায় এবং দুবার ডিকোড করতে হয়।
Base64 ডিকোডিং স্পেস ও লাইন ব্রেক উপেক্ষা করে, তাই ইমেইলের মতো কয়েক লাইনে ভাঙা মান যেমন পেস্ট করা হয়েছে তেমনই ডিকোড হয়। Base64URL ডিকোডিং + ও / ও গ্রহণ করে, কিন্তু সাধারণ Base64 - ও _ প্রত্যাখ্যান করে, তাই JWT-এর অংশের জন্য Base64URL বিকল্প লাগে। Hex ডিকোডিং স্পেস, কোলন, কমা, ড্যাশ ও 0x প্রিফিক্স বাদ দেয়, তাই 48:65:6c:6c:6f এবং 0x48 0x65 দুটোই কাজ করে। URL ডিকোডিং + কে স্পেসে বদলায়, তাই আসল প্লাস চিহ্ন %2B হিসেবে আসতে হবে। HTML এনকোডিং পাঁচটি অক্ষর & < > " ও ' এস্কেপ করে; HTML ডিকোডিং ও …-এর মতো প্রতিটি HTML5 নামযুক্ত এনটিটি এবং রুপি চিহ্নের জন্য ₹-এর মতো সংখ্যাসূচক এনটিটি বোঝে।
এখানে URL এনকোডিং একটি মাত্র মান এনকোড করে, যেমন একটি কোয়েরি প্যারামিটার, তাই প্রতিটি সংরক্ষিত অক্ষর এস্কেপ হয়: https://example.com/a b?x=1&y=2 হয়ে যায় https%3A%2F%2Fexample.com%2Fa%20b%3Fx%3D1%26y%3D2. লিংকে যে মানটি বসাচ্ছেন শুধু সেটিই এনকোড করুন, পুরো লিংক কখনও নয়. ASCII-এর বাইরের টেক্সট তার UTF-8 বাইট হিসেবে এনকোড হয়: café ₹ হয়ে যায় caf%C3%A9%20%E2%82%B9, আর হেক্স একই বাইট দেখায়, é হলো c3 a9 এবং ₹ হলো e2 82 b9. user:pass-এর Base64 হলো dXNlcjpwYXNz, এই মানটিই HTTP Basic Authorization হেডারে থাকে (RFC 7617), তাই যে কেউ সেই হেডার দেখলে পাসওয়ার্ড পড়তে পারে.
বাইটগুলো UTF-8 ছিল, কিন্তু এনকোড হওয়ার আগে কোথাও Latin-1 বা Windows-1252 হিসেবে পড়া হয়েছিল। এখানে ডিকোড বাইটগুলো যেমন আছে তেমনই দেখায়; সমাধান সেই সিস্টেমে, যেটি এগুলো তৈরি করেছে।
২,০০,০০০ অক্ষর পর্যন্ত টেক্সট পেস্ট করুন। ছবির মতো বাইনারি ফাইলের ডিকোড করা বাইট ডাউনলোডে পরিণত না করে hex-এ দেখানো হয়।
না। Base64 শুধু বাইট লেখার ধরন বদলায়, যাতে সাধারণ টেক্সট আশা করা সিস্টেম পার হতে পারে। যে কেউ এটি ডিকোড করতে পারে; পাসওয়ার্ড বা গোপন তথ্য লুকাতে কখনো এটি ব্যবহার করবেন না।
Base64URL "+" ও "/" এর বদলে "-" ও "_" ব্যবহার করে এবং সাধারণত "=" প্যাডিং বাদ দেয়, ফলে ফল URL ও ফাইলের নামে নিরাপদ থাকে। JSON Web Token এটি ব্যবহার করে।
না। একই অনুরোধে রূপান্তর করে ফেরত দেওয়া হয় এবং কখনো ডেটাবেস বা লগে লেখা হয় না।
এই টুল ! ' ( ) এবং * অক্ষরগুলোও এস্কেপ করে, যেগুলো encodeURIComponent যেমন আছে তেমনই রাখে, তাই it's (50%) off! হয়ে যায় it%27s%20%2850%25%29%20off%21. দুটি রূপই ডিকোড করলে একই টেক্সট দেয়, আর কোয়েরি মানের ভেতরে এই অক্ষরগুলো এস্কেপ করা সবসময় নিরাপদ. স্পেস হয় %20, + নয়; + রূপটি আসে HTML ফর্ম এনকোডিং থেকে, এবং এখানকার ডিকোডার দুটোই পড়তে পারে.
Linux বা Mac-এ echo -n 'Hello, World' | base64 দিলে SGVsbG8sIFdvcmxk পাওয়া যায়, আর echo 'SGVsbG8sIFdvcmxk' | base64 --decode সেটিকে আবার টেক্সটে ফেরায়। -n বাদ দিলে echo একটি নতুন লাইন যোগ করে যা সঙ্গে এনকোড হয়, ফলে আসে SGVsbG8sIFdvcmxkCg==: দুটি টুলের ফল না মেলার সবচেয়ে সাধারণ কারণ এটাই। PowerShell-এ [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes('Hello, World')) এনকোড করে এবং [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('SGVsbG8sIFdvcmxk')) ডিকোড করে। এই পেজ আপনি যা পেস্ট করেন ঠিক সেই অক্ষরগুলোই UTF-8-এ এনকোড করে, কোনো নতুন লাইন যোগ করে না।
শুধু কমার পরের অংশটি পেস্ট করুন: data:image/png;base64,iVBORw0KGgo... এর মধ্যে সেটি হলো iVBORw0KGgo..., কারণ data:image/png;base64, প্রিফিক্সটি Base64 নয় এবং পুরো স্ট্রিং বাতিল হয়ে যায়। Base64 আর Decode বেছে নিন। যে বাইটগুলো টেক্সট নয় সেগুলো ছবি হিসেবে না এঁকে hex আকারে দেখানো হয়, আর ফাইলটা কী তা বোঝার জন্য সেটাই যথেষ্ট: PNG শুরু হয় 89 50 4e 47 দিয়ে, JPEG ff d8 ff দিয়ে, আর পুরো একটি .docx, .xlsx বা অন্য ZIP-ভিত্তিক ফাইল 50 4b 03 04 দিয়ে। ছবিটি নিজে দেখতে পুরো data URI ব্রাউজারের অ্যাড্রেস বারে পেস্ট করুন। ইনপুটের সীমা 2,00,000 অক্ষর, অর্থাৎ প্রায় 1,50,000 বাইটের ফাইল।
Base64 প্রতি 3 বাইটকে 4টি অক্ষরে লেখে এবং শেষ গ্রুপটিকে 4-এর গুণিতক পর্যন্ত = দিয়ে পূরণ করে (RFC 4648), তাই আউটপুট ইনপুট বাইটের 4/3, ঊর্ধ্বমুখে পূর্ণসংখ্যা করা। Hello, World হলো 12 বাইট এবং 16 অক্ষরের SGVsbG8sIFdvcmxk হয়। গোনা হয় UTF-8 বাইট, অক্ষর নয়: café 4টি অক্ষর কিন্তু 5 বাইট এবং Y2Fmw6k= হয়, আর ₹100 হলো 6 বাইট এবং 4oK5MTAw হয়। বাংলার প্রতিটি অক্ষর UTF-8-এ 3 বাইট নেয়, তাই বাংলা টেক্সটের Base64 অক্ষর গণনার চেয়ে অনেক লম্বা হয়। ইমেইল অ্যাটাচমেন্ট আরও একটু বাড়ে, কারণ MIME Base64-কে সর্বোচ্চ 76 অক্ষরের লাইনে ভাঙে (RFC 2045); এই পেজ ডিকোড করার সময় সেই লাইন ব্রেকগুলো উপেক্ষা করে। প্যাডিং ছাড়া Base64URL শুধু = চিহ্নগুলো বাঁচায়।