تبدیل Base64 (Encode و Decode)

متن یا فایل را به Base64 تبدیل کنید یا Base64 را به حالت اول برگردانید؛ با پشتیبانی کامل از فارسی.

خروجی

این ابزار کاملا در مرورگر شما اجرا می‌شود و هیچ داده‌ای به سرور ارسال نمی‌شود.

فهرست مطالب

تبدیل Base64 با این ابزار سه حالت دارد. در حالت اول، متنی را که می‌نویسید، فارسی یا انگلیسی، همزمان با تایپ به Base64 تبدیل می‌کند. در حالت دوم، رشتهٔ Base64 را می‌گیرد و متن اصلی آن را نشان می‌دهد. در حالت سوم، فایل یا تصویری تا پنج مگابایت را به Data URI تبدیل می‌کند؛ رشته‌ای که با نوع فایل شروع می‌شود و می‌توانید مستقیم در HTML یا CSS بگذارید. برای تصویرها، پیش‌نمایش هم نشان داده می‌شود. گزینهٔ URL-safe، دو نویسهٔ مشکل‌ساز در نشانی‌های وب را با جایگزین‌های امن عوض می‌کند و علامت‌های پرکنندهٔ انتهایی را برمی‌دارد. ابزار متن فارسی را پیش از کدگذاری به UTF-8 تبدیل می‌کند تا برخلاف بسیاری از ابزارها، فارسی خراب نشود. همهٔ تبدیل‌ها در مرورگر شما انجام می‌شوند.

راهنمای استفاده از تبدیل Base64

  1. حالت رمزگذاری یا رمزگشایی را انتخاب کنید.
  2. متن را وارد کنید یا فایل را انتخاب کنید.
  3. خروجی را کپی یا دانلود کنید.

Base64 چیست و چرا وجود دارد؟

رایانه‌ها همه‌چیز را به شکل بایت ذخیره می‌کنند؛ عددهایی بین صفر تا ۲۵۵. اما بسیاری از کانال‌های ارتباطی، که سال‌ها پیش برای متن ساده طراحی شده‌اند، فقط بخشی از این بایت‌ها را درست منتقل می‌کنند. ایمیل در اصل برای متن انگلیسی ساخته شده بود، نشانی‌های وب نویسه‌های خاصی را نمی‌پذیرند و قالب‌های متنی مثل JSON و XML نمی‌توانند بایت‌های دلخواه را بدون دردسر در خود نگه دارند. اگر بخواهید عکسی را داخل یک ایمیل یا یک فایل JSON بگذارید، باید آن را به شکلی دربیاورید که فقط از نویسه‌های امن ساخته شده باشد.

Base64 دقیقا همین کار را می‌کند. هر داده‌ای را با شصت‌وچهار نویسه می‌نویسد؛ بیست‌وشش حرف بزرگ انگلیسی، بیست‌وشش حرف کوچک، ده رقم و دو نماد که در حالت استاندارد جمع و خط مورب‌اند. این شصت‌وچهار نویسه تقریبا در هر سیستمی بدون تغییر منتقل می‌شوند. نام Base64 هم از همین شصت‌وچهار نویسه آمده است. این روش دهه‌هاست در ایمیل برای پیوست‌ها به کار می‌رود و امروز در وب، API‌ها و برنامه‌نویسی همه‌جا دیده می‌شود.

تبدیل Base64 چطور کار می‌کند؟

حجم Base64
هر سه بایت به چهار نویسه تبدیل می‌شود؛ یعنی حدود یک‌سوم افزایش حجم.

Base64 داده را سه‌بایت‌سه‌بایت می‌خواند. سه بایت، بیست‌وچهار بیت است. این بیست‌وچهار بیت به چهار گروه شش‌بیتی تقسیم می‌شوند و هر گروه شش‌بیتی، عددی بین صفر تا شصت‌وسه است که با یکی از شصت‌وچهار نویسه نوشته می‌شود. پس هر سه بایت ورودی، چهار نویسهٔ خروجی می‌سازد. اگر تعداد بایت‌ها بر سه بخش‌پذیر نباشد، انتهای خروجی با یک یا دو علامت مساوی پر می‌شود تا طول خروجی همیشه مضربی از چهار باشد.

همین ساختار دلیل افزایش حجم را توضیح می‌دهد؛ سه بایت می‌شوند چهار نویسه، یعنی حدود سی‌وسه درصد افزایش. کلمهٔ انگلیسی Hello پنج بایت است و Base64 آن هشت نویسه، با یک علامت مساوی در انتها. کلمهٔ سلام هشت بایت است، چون هر حرف فارسی در UTF-8 دو بایت جا می‌گیرد، و Base64 آن دوازده نویسه. متن نمونهٔ ابزار، یعنی سلام دنیا با علامت تعجب و کلمهٔ Hello، بیست‌وچهار بایت است و Base64 آن دقیقا سی‌ودو نویسه، بدون علامت پرکننده، چون بیست‌وچهار بر سه بخش‌پذیر است.

ورودی تعداد بایت خروجی Base64 طول
a ۱ YQ== ۴
ab ۲ YWI= ۴
abc ۳ YWJj ۴
Hello ۵ SGVsbG8= ۸
سلام ۸ 2LPZhNin2YU= ۱۲

Base64 فارسی؛ چرا در برخی ابزارها خراب می‌شود؟

مرورگرها تابعی داخلی برای Base64 دارند که قدیمی است و فقط با نویسه‌هایی کار می‌کند که یک بایت جا می‌گیرند. اگر متن فارسی را مستقیم به این تابع بدهید، یا خطا می‌دهد یا خروجی‌ای می‌سازد که با برگرداندن، به جای فارسی، حروف نامفهوم نشان می‌دهد. بسیاری از ابزارهای آنلاین و حتی کدهایی که برنامه‌نویسان از اینترنت کپی می‌کنند، همین اشتباه را دارند و نتیجه‌شان با متن فارسی خراب است.

این ابزار پیش از کدگذاری، متن را با استاندارد UTF-8 به بایت تبدیل می‌کند و بعد بایت‌ها را به Base64 می‌برد. هنگام برگرداندن هم، بایت‌ها را با UTF-8 به متن تبدیل می‌کند. نتیجه این است که فارسی، عربی، شکلک‌ها و هر نویسهٔ یونیکد دیگری بدون خرابی کدگذاری و برگردانده می‌شوند. اگر رشتهٔ Base64 را از سیستمی گرفته‌اید که متن را با کدگذاری دیگری، مثل کدگذاری قدیمی ویندوز، ساخته، خروجی ممکن است نامفهوم باشد؛ در این صورت مشکل از کدگذاری اصلی است، نه Base64.

Base64 رمزنگاری نیست

Base64 یا رمزنگاری؟
هر کسی Base64 را بدون رمز برمی‌گرداند؛ برای پنهان کردن، رمزنگاری لازم است.

این مهم‌ترین نکته دربارهٔ Base64 است و اشتباه گرفتنش با رمزنگاری، بارها به نشت اطلاعات منجر شده. رشتهٔ Base64 برای چشم انسان نامفهوم است و همین باعث می‌شود برخی فکر کنند داده پنهان شده. اما هر کسی، با همین ابزار یا یک خط کد، بدون هیچ رمز یا کلیدی آن را برمی‌گرداند. Base64 فقط لباس دیگری برای داده است، نه قفل.

برنامه‌نویسانی که رمز عبور یا کلید API را با تبدیل به Base64 در کد یا فایل تنظیمات می‌گذارند و فکر می‌کنند امن است، اشتباه می‌کنند. همین برای توکن‌های احراز هویت هم صادق است؛ بخش‌های یک توکن JWT که در وب رایج است، Base64 از نوع URL-safe‌اند و هر کسی می‌تواند محتوایشان را بخواند. امنیت این توکن‌ها از امضای دیجیتالشان می‌آید، نه از پنهان بودن محتوا؛ پس هرگز اطلاعات محرمانه را در آن‌ها نگذارید. اگر می‌خواهید متنی را واقعا پنهان کنید، رمزنگاری متن را ببینید.

حالت URL-safe

دو نماد Base64 استاندارد، یعنی جمع و خط مورب، در نشانی‌های وب معنای خاصی دارند؛ خط مورب مسیر را جدا می‌کند و جمع در برخی جاها فاصله تعبیر می‌شود. علامت مساوی هم در پارامترهای نشانی معنا دارد. برای همین، نسخه‌ای از Base64 تعریف شده که جمع را با خط تیره و خط مورب را با زیرخط جایگزین می‌کند و معمولا علامت‌های پرکنندهٔ انتهایی را هم برمی‌دارد. این نسخه را URL-safe می‌نامند و در توکن‌ها، نشانی‌های کوتاه و پارامترهای وب کاربرد دارد.

در متن نمونهٔ ابزار، خروجی استاندارد یک خط مورب دارد که در حالت URL-safe به زیرخط تبدیل می‌شود. اگر گزینهٔ URL-safe را روشن کنید، خروجی کدگذاری به این شکل ساخته می‌شود. هنگام برگرداندن، ابزار هر دو نسخه را خودکار می‌شناسد؛ خط تیره و زیرخط را به شکل استاندارد برمی‌گرداند و علامت‌های پرکنندهٔ جاافتاده را خودش اضافه می‌کند. فاصله‌ها و خط‌های تازه هم که گاهی هنگام کپی وارد رشته می‌شوند، نادیده گرفته می‌شوند.

تبدیل عکس به Base64 و Data URI

در حالت فایل، ابزار فایل را می‌خواند و Data URI آن را می‌سازد؛ رشته‌ای که با کلمهٔ data و نوع فایل شروع می‌شود و بعد از کلمهٔ base64 و یک ویرگول، خود دادهٔ کدگذاری‌شده می‌آید. این رشته را می‌توانید مستقیم به جای نشانی تصویر در HTML، در پس‌زمینهٔ CSS یا داخل یک فایل JSON بگذارید. مرورگر تصویر را بدون درخواست جداگانه به سرور نمایش می‌دهد. زیر کادر، حجم فایل اصلی و حجم Data URI کنار هم نمایش داده می‌شوند تا افزایش حجم را ببینید.

Data URI برای تصویرهای کوچک، مثل آیکون‌ها، لوگوهای کوچک و تصویرهای جانگهدار، مفید است؛ یک درخواست شبکه کمتر یعنی بارگذاری کمی سریع‌تر. اما برای تصویرهای بزرگ مناسب نیست. حجم یک‌سوم بیشتر می‌شود، مرورگر نمی‌تواند تصویر را جداگانه در حافظهٔ موقت نگه دارد و کل صفحه یا فایل CSS سنگین‌تر می‌شود. قاعدهٔ رایج این است که فقط تصویرهای چند کیلوبایتی را به Data URI تبدیل کنید. ابزار فایل‌های تا پنج مگابایت را می‌پذیرد، اما پیش از تبدیل تصویر بزرگ، آن را با کاهش حجم عکس کوچک کنید.

کاربردهای رایج Base64

ایمیل قدیمی‌ترین کاربرد است؛ پیوست‌های ایمیل در پشت صحنه به Base64 تبدیل می‌شوند و گیرنده آن‌ها را برمی‌گرداند. در API‌ها، وقتی باید فایلی را داخل درخواست JSON فرستاد، معمولا Base64 آن فرستاده می‌شود. احراز هویت پایهٔ HTTP، نام کاربری و رمز را با Base64 در سرآیند درخواست می‌گذارد؛ که دوباره یادآوری می‌کند Base64 امن نیست و این روش فقط روی اتصال امن قابل قبول است. کلیدها و گواهی‌های رمزنگاری هم معمولا در قالبی متنی ذخیره می‌شوند که بدنه‌اش Base64 است.

برای کاربران عادی، کاربرد معمولش رمزگشایی رشته‌هایی است که جایی دیده‌اند؛ در نشانی یک لینک، در کد یک صفحه یا در پیامی که برایشان فرستاده شده. رشته‌ای که فقط از حروف و اعداد انگلیسی ساخته شده، طولش مضربی از چهار است و شاید با یک یا دو علامت مساوی تمام می‌شود، احتمالا Base64 است. آن را در حالت دوم ابزار بچسبانید تا ببینید داخلش چیست. اگر نتیجه متن خوانا نبود، احتمالا دادهٔ اصلی متن نبوده، بلکه فایل یا دادهٔ دودویی بوده است.

نمونه؛ رمزگشایی یک توکن

فرض کنید برنامه‌نویسی هستید که با یک API کار می‌کند و توکن ورودی دریافت کرده‌اید؛ رشته‌ای بلند که از سه بخش تشکیل شده و با نقطه از هم جدا شده‌اند. بخش اول و دوم، Base64 از نوع URL-safe‌اند. بخش دوم را جدا کنید، در حالت دوم ابزار بچسبانید و نتیجه را ببینید؛ معمولا یک شیء JSON است که شناسهٔ کاربر، زمان صدور و زمان انقضای توکن را دارد. ابزار علامت‌های پرکنندهٔ جاافتاده و نویسه‌های URL-safe را خودش درست می‌کند، پس لازم نیست کاری روی رشته انجام دهید.

این کار برای اشکال‌یابی بسیار مفید است؛ مثلا وقتی سرور توکن را رد می‌کند و می‌خواهید ببینید منقضی شده یا نه. زمان‌ها در این توکن‌ها معمولا به شکل عدد ثانیه از مبدأ زمانی یونیکس‌اند که با تبدیل تایم‌استمپ به تاریخ قابل فهم تبدیل می‌شوند. اما همین مثال هشداری هم هست؛ هر کسی که توکن شما را ببیند، می‌تواند همین کار را بکند. پس توکن‌ها را در جاهای عمومی منتشر نکنید و اطلاعات محرمانه را داخلشان نگذارید.

Base64 در CSS و HTML

برای استفاده از Data URI در HTML، رشتهٔ کامل را در ویژگی نشانی تصویر بگذارید؛ مرورگر آن را مثل هر تصویر دیگری نمایش می‌دهد. در CSS، همین رشته را داخل تابع نشانی پس‌زمینه قرار دهید. برای آیکون‌های SVG، که خودشان متن‌اند، گاهی بهتر است به جای Base64، خود کد SVG را با رمزگذاری نشانی در Data URI بگذارید؛ این روش معمولا کم‌حجم‌تر است، چون Base64 حجم را یک‌سوم بیشتر می‌کند ولی رمزگذاری نشانی برای متن SVG افزایش کمتری دارد.

در ایمیل‌های HTML، Data URI در همهٔ برنامه‌های ایمیل نمایش داده نمی‌شود؛ برخی سرویس‌های رایج ایمیل تصویرهای Data URI را مسدود می‌کنند. برای ایمیل، تصویرها را روی سرور بگذارید و با نشانی معمولی به آن‌ها لینک دهید. Data URI برای صفحه‌های وب و برنامه‌ها مناسب‌تر است.

Base64 و حجم داده در شبکه

چون Base64 حجم را یک‌سوم بیشتر می‌کند، فرستادن فایل‌های بزرگ به این شکل در API‌ها پرهزینه است. فایل ده‌مگابایتی، پس از تبدیل، حدود سیزده و سه دهم مگابایت می‌شود و این افزایش برای هر درخواست تکرار می‌شود. اگر سیستم شما امکان بارگذاری مستقیم فایل با قالب‌های چندبخشی را دارد، آن روش کارآمدتر است. Base64 را برای داده‌های کوچک یا جاهایی نگه دارید که چاره‌ای جز قالب متنی ندارید. فشرده‌سازی‌هایی که سرورهای وب روی پاسخ‌ها انجام می‌دهند، بخشی از این افزایش را جبران می‌کنند، اما نه همه‌اش را.

خطاهای رایج

خطای اول، استفاده از Base64 برای پنهان کردن اطلاعات است که در بالا گفتیم. خطای دوم، کدگذاری متن فارسی با ابزارها یا کدهایی که UTF-8 را رعایت نمی‌کنند. خطای سوم، فرستادن Base64 استاندارد در نشانی وب بدون تبدیل به URL-safe یا رمزگذاری نشانی؛ جمع و خط مورب در مسیر نشانی خراب می‌شوند. برای کدگذاری کلی نشانی‌ها، رمزگذاری URL را ببینید. خطای چهارم، جا انداختن بخشی از رشته هنگام کپی است؛ رشتهٔ Base64 ناقص یا خطا می‌دهد یا نتیجهٔ ناقص و خراب.

چطور بفهمیم یک رشته Base64 است؟

چند نشانه کمک می‌کند. رشتهٔ Base64 استاندارد فقط حروف بزرگ و کوچک انگلیسی، رقم، جمع، خط مورب و در انتها حداکثر دو علامت مساوی دارد؛ نسخهٔ URL-safe به جای جمع و خط مورب، خط تیره و زیرخط دارد. طول رشتهٔ استاندارد همیشه مضربی از چهار است. فاصله و نویسهٔ دیگری داخلش نیست، مگر شکست خط در رشته‌های بلند که در ایمیل و گواهی‌ها رایج است. برخی رشته‌ها هم شروع‌های آشنایی دارند؛ مثلا Base64 تصویرهای PNG همیشه با حروف iVBOR شروع می‌شود و JPEG با /9j/. اگر رشته‌ای این ویژگی‌ها را دارد، آن را در ابزار امتحان کنید.

حریم خصوصی

همهٔ تبدیل‌ها در مرورگر شما انجام می‌شوند و متن یا فایل به هیچ سروری فرستاده نمی‌شود. با این حال، اگر رشتهٔ Base64 اطلاعات حساسی دارد، به یاد داشته باشید که هر کسی که آن را ببیند، می‌تواند برش گرداند.

یک تمرین کوچک

اگر می‌خواهید منطق Base64 را حس کنید، در حالت اول ابزار، یک حرف بنویسید و خروجی را ببینید؛ چهار نویسه با دو علامت مساوی. حرف دوم را اضافه کنید؛ هنوز چهار نویسه، اما با یک علامت مساوی. حرف سوم؛ چهار نویسه بدون علامت. حرف چهارم؛ هشت نویسه. این الگوی سه‌به‌چهار، همهٔ چیزی است که Base64 انجام می‌دهد. حالا یک حرف فارسی بنویسید و ببینید که مثل دو حرف انگلیسی رفتار می‌کند، چون دو بایت است.

ابزارهای مرتبط

برای مرتب کردن و بررسی JSONی که داده‌های Base64 دارد، مرتب‌سازی JSON را ببینید و برای دیدن بیت‌های یک متن، تبدیل متن به باینری. همهٔ ابزارهای برنامه‌نویسی در ابزارهای برنامه‌نویسی آمده‌اند.

آخرین بازبینی محتوا: · تیم تحریریه ابزار جیبی

سوالات متداول

چرا Base64 فارسی در برخی ابزارها خراب می‌شود؟
چون btoa مرورگر فقط با نویسه‌های لاتین کار می‌کند؛ این ابزار ابتدا متن را به UTF-8 تبدیل می‌کند تا فارسی درست کدگذاری شود.
Base64 چیست؟
روشی برای نوشتن هر دادهٔ دودویی، مثل فایل یا متن یونیکد، فقط با ۶۴ نویسهٔ امن انگلیسی، تا بتواند از کانال‌هایی که فقط متن ساده می‌پذیرند، مثل ایمیل، نشانی وب یا JSON، بدون خرابی عبور کند.
Base64 رمزنگاری است؟
خیر؛ فقط کدگذاری است و هر کسی بدون هیچ رمزی می‌تواند آن را برگرداند. هرگز رمز یا اطلاعات حساس را با تبدیل به Base64 پنهان شده فرض نکنید.
Data URI چیست؟
نشانی‌ای که خود داده را به شکل Base64 در خودش دارد، با نوع فایل در ابتدا. می‌توانید آن را به جای نشانی تصویر در HTML یا CSS بگذارید تا تصویر بدون درخواست جداگانه نمایش داده شود.
چرا حجم Base64 بیشتر می‌شود؟
چون هر سه بایت داده به چهار نویسه تبدیل می‌شود؛ یعنی خروجی حدود یک‌سوم بزرگ‌تر از ورودی است.

این ابزار چقدر برایتان مفید بود؟

اولین نفری باشید که به این ابزار امتیاز می‌دهد.

↑ ↓ جابه‌جاییEnter باز کردنEsc بستن