RevealTheme logo

کدگذار و کدگشای Base64

رشته‌ها را به Base64 کدگذاری یا Base64 را به متن کدگشایی کنید. به حریم خصوصی شما احترام می‌گذارد: در مرورگر شما اجرا می‌شود.

Base64 چیست و چرا همه‌جا حضور دارد؟

Base64 یک طرح کدگذاری است —نه رمزنگاری— که داده‌های دودویی دلخواه را تنها با ۶۴ کاراکتر چاپی ASCII (A-Z، a-z، 0-9، به‌علاوه +، / و = به‌عنوان لایی) نمایش می‌دهد. وجود دارد چون بسیاری از پروتکل‌های انتقال، فرمت‌های فایل و APIها فقط متنی هستند یا با برخی بایت‌ها رفتار خاصی دارند: ایمیل (SMTP برای ASCII ۷ بیتی طراحی شده)، JSON (نمی‌تواند بایت خام داشته باشد)، URLها (کاراکترهای رزرو دارند)، سرآیندهای HTTP (متن خط‌محور) و ویژگی‌های HTML همگی به راهی برای انتقال داده‌های دودویی از کانال‌های متنی نیاز دارند. Base64 این مشکل را با گروه‌بندی بایت‌های ورودی در دسته‌های ۳تایی (۲۴ بیت) و بازکدگذاری هر دسته به‌صورت ۴ کاراکتر Base64 (هرکدام ۶ بیت) حل می‌کند. جریمه اندازه دقیقاً ۳۳٪ است: هر ۳ بایت به ۴ کاراکتر تبدیل می‌شود. این ابزار متن UTF-8 یا رشته‌های Base64 را در هر دو جهت، کاملاً در مرورگر شما کدگذاری می‌کند. کاراکترهای چندبایتی UTF-8 (اموجی، الفباهای غیرلاتین) را به‌درستی مدیریت می‌کند، چیزی که پیاده‌سازی‌های ساده‌انگارانه Base64 که مستقیماً از atob/btoa استفاده می‌کنند خراب می‌کنند.

موارد استفاده رایج

  • تصاویر کوچک را مستقیماً در CSS به‌صورت data: URL جاسازی کنید (برای آیکون‌های ریز، یک درخواست HTTP را حذف می‌کند).

  • محتوای یک JWT یا هدر Basic Auth را رمزگشایی کنید تا درون آن را بررسی کنید.

  • محتوای یک فایل دودویی را رمزگذاری کنید تا در یک فیلد JSON یا متغیر محیطی قرار دهید.

  • داده‌ی دودویی را از میان سیستم‌هایی که بایت‌های دلخواه را حفظ نمی‌کنند (ایمیل، کپی/چسباندن) عبور دهید.

  • هنگام اشکال‌زدایی، پاسخ‌های API یا محتوای webhook رمزگذاری‌شده با base64 را رمزگشایی کنید.

  • اعتبارنامه‌های دودویی را به قالبی مناسب برای کپی/چسباندن تبدیل کنید تا به تیم عملیات تحویل دهید.

پرسش‌های متداول

آیا Base64 یک رمزنگاری است؟
خیر. Base64 یک کدگذاری برگشت‌پذیر است: هرکسی می‌تواند بدون کلید فوراً آن را کدگشایی کند. برای محرمانگی، از رمزنگاری واقعی (AES-256، RSA یا ابزار رمزنگاری AES ما) استفاده کنید. در نظر گرفتن Base64 به‌عنوان امنیت، رایج‌ترین اشتباه درباره آن است.
چرا Base64 حدود ۳۳٪ به اندازه می‌افزاید؟
کدگذاری ۳ بایت (۲۴ بیت) ورودی را به ۴ کاراکتر (۲۴ بیت، چون هر کاراکتر Base64 معادل ۶ بیت است) نگاشت می‌کند. سربار اندازه ذاتی و اجتناب‌ناپذیر است. برای نمایش‌های دودویی کوچک‌تر، از Base85 استفاده کنید یا اگر کانال پشتیبانی می‌کند، دودویی خام بفرستید.
Base64 امن برای URL چیست؟
گونه‌ای که در RFC 4648 تعریف شده و + را با - و / را با _ جایگزین می‌کند، به‌طوری که خروجی بدون کدگذاری درصدی برای قرار گرفتن در مسیرهای URL یا نام فایل‌ها امن است. JWTها از Base64 امن برای URL استفاده می‌کنند. بسیاری از APIها هر دو گونه را می‌پذیرند.
چرا در انتها '=' می‌بینم؟
این‌ها کاراکترهای لایی هستند. Base64 خروجی را در گروه‌های ۴ کاراکتری تولید می‌کند؛ اگر ورودی مضربی از ۳ بایت نباشد، آخرین گروه تا رسیدن به ۴ کاراکتر با '=' پر می‌شود. برخی گونه‌های Base64 لایی را حذف می‌کنند؛ هر دو به یک شکل کدگشایی می‌شوند.
آیا اموجی و متن غیرلاتین را مدیریت می‌کند؟
بله. این ابزار ابتدا متن را به بایت‌های UTF-8 تبدیل و سپس بایت‌ها را به Base64 کدگذاری می‌کند. این کار از اشتباه کلاسیک JavaScript جلوگیری می‌کند که در آن btoa() با کاراکترهای غیر Latin1 شکست می‌خورد.
Base64 را در کجای اپلیکیشن‌های واقعی می‌بینم؟
همه‌جا: URLهای data: تصاویر در CSS، سرآیندهای Authorization: Basic، بخش‌های JWT، امضاهای URLهای امضاشده، URLهای از پیش امضاشده S3، گواهی‌های PKCS (فرمت PEM)، پیوست‌های ایمیل (MIME)، بارهای داده کدهای QR و رازهای به‌سبک .env در پلتفرم‌های استقرار مدرن.

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