ابزار رایگان · بدون ثبت‌نام

فقط در مرورگر شما؛ چیزی ارسال نمی‌شود

تبدیل Base64 آنلاین (Encode و Decode)

متن را به Base64 کدگذاری کنید یا رشتهٔ Base64 را به متن برگردانید. نتیجه همزمان با تایپ ظاهر می‌شود، متن فارسی با UTF-8 درست تبدیل می‌شود و نسخهٔ URL‑safe برای توکن‌ها و لینک‌ها هم پشتیبانی می‌شود.

جهت تبدیل

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

این متن خودش شبیه Base64 است. می‌خواهید آن را به متن برگردانید؟

راهنمای کامل

راهنمای کامل Base64 برای توسعه‌دهنده‌ها و مدیران سرور

Base64 یکی از آن مفاهیمی است که هر روز با آن سروکار داریم و کمتر به آن فکر می‌کنیم: در هدر Authorization، در Secret‌های Kubernetes، در پیوست ایمیل، در توکن‌های JWT و حتی در رکورد DKIM دامنه. این راهنما توضیح می‌دهد Base64 دقیقاً چه می‌کند، کی باید از نسخهٔ URL-safe استفاده کرد، معادل همین ابزار در خط فرمان لینوکس چیست و چرا Base64 هرگز جای رمزنگاری را نمی‌گیرد.

۹ بخش حدود ۹ دقیقه مطالعه

فهرست مطالب

Base64 چیست و چرا «رمزگذاری» به معنای امنیت نیست؟

Base64 یک روش کدگذاری (Encoding) است که هر دادهٔ دودویی را به رشته‌ای از ۶۴ نویسهٔ قابل‌چاپ تبدیل می‌کند: حروف بزرگ و کوچک انگلیسی، ارقام ۰ تا ۹ و دو نویسهٔ + و /. علامت = هم در انتها برای پر کردن (padding) می‌آید. منطقش ساده است: هر سه بایت ورودی، یعنی ۲۴ بیت، به چهار تکهٔ ۶ بیتی شکسته می‌شود و هر تکه به یکی از آن ۶۴ نویسه نگاشت می‌شود. نتیجه متنی است که از هر کانالی که فقط متن ساده را تحمل می‌کند، سالم عبور می‌کند.

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

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

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

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

  • حالت موردنظر را انتخاب کنید: «متن به Base64» یا «Base64 به متن».
  • اگر خروجی کدگذاری قرار است در URL، نام فایل یا توکن استفاده شود، تیک URL-safe را بزنید؛ در بازگردانی نسخه خودکار تشخیص داده می‌شود.
  • متن یا رشتهٔ Base64 را در کادر ورودی بچسبانید؛ تبدیل خودکار و زنده انجام می‌شود.
  • با دکمهٔ «کپی خروجی» نتیجه را بردارید و برای اطمینان یک بار با «خروجی را ورودی کن» رفت‌وبرگشت را امتحان کنید.

بازگشت به فهرست مطالب

Base64 معمولی یا URL-safe؛ کدام را انتخاب کنیم؟

دو نویسهٔ + و / در Base64 استاندارد داخل URL معنای خاص دارند: + در query string گاهی به فاصله تبدیل می‌شود و / مسیر را می‌شکند. به همین دلیل استاندارد RFC 4648 نسخه‌ای به نام base64url تعریف کرده که به‌جای این دو، از - و _ استفاده می‌کند. توکن‌های JWT، بسیاری از لینک‌های تأیید ایمیل و شناسه‌های کوتاه در API‌ها از همین نسخه استفاده می‌کنند.

وقتی تیک URL-safe را می‌زنید، ابزار هنگام کدگذاری + را به - و / را به _ تبدیل می‌کند و علامت‌های = انتهایی را هم حذف می‌کند، چون در URL اضافی‌اند. هنگام بازگردانی لازم نیست کاری کنید: ابزار از روی وجود - یا _ نسخهٔ URL-safe را خودش تشخیص می‌دهد، تبدیل را برعکس انجام می‌دهد و padding جاافتاده را اضافه می‌کند. بسیاری از ابزارها و کتابخانه‌ها در همین حالت خطا می‌دهند و همین رایج‌ترین دلیل شکست بازگردانی توکن‌هاست؛ در کد خودتان باید تابع مخصوص base64url را صدا بزنید.

ویژگیBase64 استانداردBase64 URL-safeکدگذاری URL (درصدی)
نویسه‌های خاص+ و /- و _%XX برای هر بایت غیرمجاز
padding با =دارددر این ابزار حذف می‌شودندارد
افزایش حجمحدود ۳۳ درصدحدود ۳۳ درصدبرای متن فارسی تا حدود سه برابر
کاربرد رایجایمیل، Basic Auth‏، Secret‌هاJWT، توکن در لینکپارامترهای query

برای کدگذاری پارامترهای آدرس به‌جای Base64 از ابزار URL Encode استفاده کنید و برای خواندن محتوای توکن‌ها سراغ دیکودر JWT بروید.

بازگشت به فهرست مطالب

کاربردهای واقعی Base64 در کار روزمره

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

اگر روی سرور ابری ایران‌کلاد کلاستر سبک K3s راه انداخته‌اید، مقادیر داخل بخش data در Secret‌ها باید Base64 باشند و kubectl هنگام نمایش هم همین شکل را نشان می‌دهد. در DNS هم کلید عمومی DKIM که در رکورد TXT قرار می‌گیرد، Base64 است؛ این رکورد را در پنل DNS رایگان اضافه می‌کنید و با ابزار بررسی DNS می‌بینید که درست منتشر شده یا نه.

یک مثال عملی: فرض کنید پشت Nginx یک صفحهٔ مدیریتی را با Basic Auth محافظت کرده‌اید و ابزار مانیتورینگ با خطای ۴۰۱ برمی‌گردد. کافی است مقدار هدر Authorization را از لاگ یا تنظیمات ابزار بردارید، بخش بعد از کلمهٔ Basic را در حالت «Base64 به متن» بچسبانید و ببینید نام کاربری و رمز همان چیزی هست که انتظار دارید یا نه. بارها دیده شده که یک فاصلهٔ اضافه یا دونقطهٔ جاافتاده بین نام کاربری و رمز، کل مشکل بوده است.

  • هدر Authorization: Basic که حاصل Base64 رشتهٔ user:password است.
  • مقادیر data در Secret‌های Kubernetes و K3s.
  • پیوست‌های ایمیل که با Content-Transfer-Encoding: base64 ارسال می‌شوند.
  • بخش header و payload توکن‌های JWT با نسخهٔ base64url.
  • Data URI برای جاسازی تصاویر یا فونت‌های کوچک داخل CSS و HTML.
  • کلید عمومی DKIM و برخی رکوردهای تأیید مالکیت دامنه در TXT.

بازگشت به فهرست مطالب

معادل این ابزار در خط فرمان لینوکس

روی هر سرور لینوکسی دستور base64 از بستهٔ coreutils در دسترس است و کار این ابزار را در ترمینال انجام می‌دهد. مهم‌ترین تله این است که دستور echo به‌طور پیش‌فرض یک خط جدید به انتهای متن اضافه می‌کند؛ برای مثال echo hello | base64 خروجی aGVsbG8K می‌دهد، در حالی که این ابزار برای همان کلمه aGVsbG8= تولید می‌کند. برای نتیجهٔ یکسان از echo -n یا printf استفاده کنید.

تلهٔ دوم شکستن خط است. دستور base64 خروجی طولانی را به‌طور پیش‌فرض هر ۷۶ نویسه یک بار می‌شکند؛ اگر خروجی را در فایل YAML یا متغیر محیطی می‌گذارید، با گزینهٔ -w 0 آن را یک‌خطی کنید. روی macOS گزینه‌ها کمی فرق دارند و دستور base64 -b 0 همین کار را می‌کند. برای نسخهٔ URL-safe در توزیع‌های جدیدتر دستور basenc --base64url هم وجود دارد.

کاردستور لینوکس
کدگذاری متن بدون خط جدیدprintf "%s" "hello" | base64
بازگردانی رشتهecho "aGVsbG8=" | base64 -d
کدگذاری یک فایل در یک خطbase64 -w 0 logo.png > logo.b64
کدگذاری با OpenSSLopenssl base64 -A -in file.bin
نسخهٔ URL-safeprintf "%s" "data" | basenc --base64url
خواندن Secret در K3skubectl get secret NAME -o jsonpath="{.data.KEY}" | base64 -d

بازگشت به فهرست مطالب

خطاهای رایج Base64 و راه رفع آن‌ها

بیشتر مشکلات Base64 از خود الگوریتم نیست، از حاشیه‌هاست. خط جدید پنهان در انتهای ورودی، فاصله‌ای که هنگام کپی از ایمیل یا PDF اضافه شده، و نویسه‌های CRLF ویندوز همه باعث می‌شوند خروجی دو سیستم با هم نخواند. این ابزار هنگام بازگردانی فاصله‌ها و شکست خط‌ها را نادیده می‌گیرد، اما نویسهٔ غیرمجاز، علامت = در وسط رشته یا رشتهٔ ناقص را با توضیح دقیق خطا می‌داند تا مشکل پنهان نماند.

خطای دیگر کدگذاری دوباره است: مقداری که قبلاً Base64 شده، دوباره کدگذاری و در فایل تنظیمات گذاشته می‌شود و برنامه بعد از یک بار بازگردانی هنوز متن نامفهوم می‌بیند. اگر خروجی بازگردانی‌شده خودش شبیه Base64 است (فقط حروف، عدد و = در انتها)، احتمالاً با همین مشکل روبه‌رو هستید. مورد آخر فایل‌های دودویی است: اگر یک تصویر یا فایل فشرده را decode کنید، خروجی متنی پر از نویسه‌های عجیب می‌شود؛ این طبیعی است و برای دادهٔ دودویی باید از دستور لینوکس با خروجی به فایل استفاده کنید.

  • رشتهٔ دارای - یا _ در برنامهٔ شما باز نمی‌شود: نسخهٔ URL-safe است؛ تابع base64url را به کار ببرید.
  • نتیجه با خروجی سرور فرق دارد: خط جدید انتهای echo را بررسی کنید.
  • رشتهٔ چندخطی کپی‌شده از ایمیل: این ابزار شکست خط را نادیده می‌گیرد، ولی برنامهٔ مقصد شاید نه؛ آن را یک‌خطی کنید.
  • حروف فارسی خراب: مطمئن شوید سمت دیگر هم UTF-8 استفاده می‌کند، نه Windows-1256.

بازگشت به فهرست مطالب

حریم خصوصی: متن شما کجا پردازش می‌شود؟

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

با این حال توصیهٔ حرفه‌ای این است که رمزهای عبور تولید، کلیدهای خصوصی و توکن‌های فعال را در هیچ ابزار آنلاینی نچسبانید، حتی ابزاری که سمت مرورگر کار می‌کند. افزونه‌های مرورگر می‌توانند محتوای صفحه را بخوانند و کلیپ‌بورد سیستم هم ممکن است در تاریخچهٔ برنامه‌های دیگر بماند. برای دادهٔ واقعاً حساس، همان دستور base64 روی ترمینال سرور خودتان امن‌ترین گزینه است.

بازگشت به فهرست مطالب

Base64 و امنیت: چه کارهایی را نباید انجام داد؟

رایج‌ترین اشتباه امنیتی، گذاشتن رمز یا کلید API به شکل Base64 در مخزن Git با این تصور است که «رمز شده». هر کسی به مخزن دسترسی داشته باشد، آن مقدار را در یک ثانیه می‌خواند. Secret‌های Kubernetes هم به‌طور پیش‌فرض فقط Base64 هستند و برای محافظت واقعی باید دسترسی به آن‌ها محدود شود. Basic Auth هم فقط روی HTTPS معنا دارد؛ روی HTTP ساده، هر کسی در مسیر شبکه رمز را می‌بیند.

برای ذخیرهٔ رمز عبور کاربران، نه Base64 مناسب است و نه هش سادهٔ SHA-256؛ باید از الگوریتم‌های کند و نمک‌دار مثل bcrypt یا Argon2 استفاده کرد. اگر فقط می‌خواهید یکپارچگی یک فایل را بسنجید، ابزار هش مناسب‌تر است و برای ساختن رمز قوی، تولید پسورد را امتحان کنید. ارتباط سایت با کاربر را هم با گواهی SSL رایگان رمز کنید.

بازگشت به فهرست مطالب

Base64 چقدر حجم اضافه می‌کند و کی ارزشش را دارد؟

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

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

بازگشت به فهرست مطالب بازگشت به ابتدای راهنما

پرسش و پاسخ،  ۱۰ پرسش

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

پاسخ پرسش خود را پیدا نکردید؟ با پشتیبانی در تماس باشید.

آیا Base64 یک روش رمزنگاری است؟
خیر. Base64 فقط شکل نمایش داده را عوض می‌کند و کلیدی ندارد؛ هر کسی رشته را ببیند می‌تواند در یک لحظه آن را بازگرداند. برای محرمانگی باید از رمزنگاری واقعی و اتصال HTTPS استفاده کرد.
آیا متنی که در این ابزار وارد می‌کنم به سرور ایران‌کلاد ارسال می‌شود؟
خیر. تبدیل کاملاً در مرورگر شما و با توابع استاندارد جاوااسکریپت انجام می‌شود. سرور فقط صفحه را تحویل می‌دهد و متن ورودی یا خروجی نه ارسال می‌شود و نه جایی ذخیره می‌شود.
چرا خروجی این ابزار با دستور echo در لینوکس فرق دارد؟
دستور echo به‌طور پیش‌فرض یک خط جدید به انتهای متن اضافه می‌کند و همان خط جدید هم کدگذاری می‌شود. از echo -n یا printf استفاده کنید تا خروجی دقیقاً با این ابزار یکی شود.
حالت URL-safe دقیقاً چه تغییری می‌دهد؟
در کدگذاری، نویسهٔ + به - و نویسهٔ / به _ تبدیل می‌شود و علامت‌های = انتهایی حذف می‌شوند. هنگام بازگردانی لازم نیست تیکی بزنید؛ ابزار نسخهٔ URL-safe را خودکار تشخیص می‌دهد، تبدیل را برعکس انجام می‌دهد و padding را خودش اضافه می‌کند.
آیا می‌توانم متن فارسی را به Base64 تبدیل کنم؟
بله. ورودی پیش از کدگذاری با UTF-8 به بایت تبدیل می‌شود، بنابراین حروف فارسی، نیم‌فاصله و ایموجی بدون مشکل کدگذاری و دوباره بازگردانی می‌شوند.
آیا این ابزار فایل یا تصویر را هم به Base64 تبدیل می‌کند؟
خیر، این ابزار فقط متن را می‌پذیرد. برای فایل از دستور base64 -w 0 نام‌فایل در لینوکس یا openssl base64 -A استفاده کنید تا خروجی یک‌خطی بگیرید.
چرا هنگام بازگردانی پیام خطا می‌گیرم؟
ابزار دلیل را دقیق زیر کادر خروجی می‌نویسد: نویسهٔ غیرمجاز و جایگاه آن (مثلاً نقطه، گیومه یا حرف فارسی که هنگام کپی وارد شده)، ترکیب الفبای معمولی و URL-safe در یک رشته، علامت = در وسط رشته یا طول ناقص که یعنی بخشی از رشته جا افتاده است. فاصله و شکست خط خطا حساب نمی‌شوند.
Base64 چقدر حجم داده را زیاد می‌کند؟
حدود ۳۳ درصد. هر سه بایت ورودی به چهار نویسه تبدیل می‌شود، پس یک فایل ۳۰ کیلوبایتی پس از کدگذاری تقریباً ۴۰ کیلوبایت می‌شود.
آیا گذاشتن رمز به شکل Base64 در فایل تنظیمات امن است؟
نه. Base64 رمز را فقط از دید یک نگاه سرسری پنهان می‌کند. رمزها را در متغیرهای محیطی با دسترسی محدود یا یک مدیر اسرار نگه دارید و هرگز در مخزن Git قرار ندهید.
برای استفاده از API ایران‌کلاد به Base64 نیاز دارم؟
خیر. کلید API ایران‌کلاد به شکل توکن Bearer در هدر Authorization فرستاده می‌شود و نیازی به کدگذاری Base64 ندارد. جزئیات در راهنمای شروع API آمده است.

پاسخ پرسش خود را پیدا نکردید؟ با پشتیبانی در تماس باشید.

سرور ابری

سرور ابری ایران‌کلاد در کمتر از ۶۰ ثانیه آماده می‌شود؛ با دیسک NVMe SSD، پورت اختصاصی ۱۰ گیگابیت و صورت‌حساب ساعتی تومانی، از ۱٬۱۰۰ تومان در ساعت.