پرش به محتوا

مبدل رمزگذاری و رمزگشایی Base64 - ابزار آنلاین رایگان تبدیل Base64

ابزار رایگان رمزگذاری و رمزگشایی base64. تبدیل متن به Base64 یا رمزگشایی رشته‌های Base64 به صورت فوری. پشتیبانی از رمزگذاری استاندارد و امن برای URL. نیازی به ورود نیست.

رمزگذار/رمزگشای Base64

تبدیل متن به و از رمزگذاری Base64

ماشین حساب بارگذاری...
📚

مستندات

کدگذاری Base64 چیست؟

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

Base64 از الفبایی با ۶۴ نویسه استفاده می‌کند:

  • حروف بزرگ A–Z (۲۶ نویسه)
  • حروف کوچک a–z (۲۶ نویسه)
  • رقم‌های ۰–۹ (۱۰ نویسه)
  • دو نماد، معمولاً + و / (۲ نویسه)

برخی سامانه‌ها همچنین در انتهای خروجی از علامت مساوی = به‌عنوان پرکننده استفاده می‌کنند. پرکننده بخشی از الفبای ۶۴ نویسه‌ای نیست؛ فقط طول خروجی را کامل می‌کند.

چرا Base64 وجود دارد

بسیاری از پروتکل‌های متنی قدیمی، از جمله ایمیل (SMTP) و برخی بخش‌های HTTP، برای انتقال متن ASCII با طول ۷ بیت ساخته شده بودند. این پروتکل‌ها ممکن است بایت‌های دودویی خام، مانند بایت‌های درون تصویر JPEG، را خراب کنند. Base64 با نمایش هر بایت فقط با نویسه‌های امن و قابل‌چاپ از این مشکل جلوگیری می‌کند. به همین دلیل پیوست‌های ایمیل، تصاویر جاسازی‌شده در صفحات وب و فیلدهای دودویی درون JSON معمولاً ابتدا از Base64 عبور می‌کنند.

Base64 نه فشرده‌سازی است و نه رمزنگاری. خروجی کدگذاری‌شده همیشه از ورودی بزرگ‌تر است و هر کسی می‌تواند بدون گذرواژه یا کلید آن را رمزگشایی کند.

نحوهٔ استفاده از این ابزار

  1. متن را در کادر ورودی بنویسید یا جای‌گذاری کنید.
  2. برای تبدیل متن به Base64 گزینهٔ «تبدیل به Base64» را انتخاب کنید، یا برای تبدیل رشتهٔ Base64 به متن گزینهٔ «تبدیل از Base64» را انتخاب کنید.
  3. تبدیل زنده را فعال کنید تا خروجی هنگام تایپ به‌طور خودکار به‌روزرسانی شود.
  4. نتیجه را با دکمهٔ کپی کپی کنید.

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

کدگذاری Base64 چگونه کار می‌کند

Base64 هر ۳ بایت ورودی (۲۴ بیت) را به ۴ نویسهٔ خروجی تبدیل می‌کند (که هرکدام ۶ بیت را در خود دارند)، زیرا ۲۴ تقسیم بر ۶ برابر با ۴ است.

  1. بایت‌های ورودی را بردارید و آن‌ها را به‌صورت دودویی بنویسید.
  2. بیت‌ها را در بخش‌های ۲۴ بیتی (۳ بایتی) گروه‌بندی کنید.
  3. هر بخش ۲۴ بیتی را به چهار قطعهٔ ۶ بیتی تقسیم کنید.
  4. هر عدد ۶ بیتی (از ۰ تا ۶۳) را در الفبای Base64 پیدا کنید و نویسهٔ متناظر را بنویسید.

اگر طول ورودی مضربی از ۳ نباشد، بخش پایانی کوتاه خواهد بود. رمزگذار آن را با بیت‌های صفر پر می‌کند و سپس = نویسه به خروجی می‌افزاید تا نتیجه همچنان در گروه‌های ۴تایی قرار گیرد:

  • یک بایت باقی‌مانده ۲ نویسهٔ Base64 به‌اضافهٔ == تولید می‌کند.
  • دو بایت باقی‌مانده ۳ نویسهٔ Base64 به‌اضافهٔ یک = تولید می‌کند.

نمونهٔ کدگذاری Base64

کدگذاری واژهٔ «Hello»:

  1. مقادیر ASCII: ۷۲، ۱۰۱، ۱۰۸، ۱۰۸، ۱۱۱
  2. دودویی: 01001000 01100101 01101100 01101100 01101111
  3. نخستین ۳ بایت (۲۴ بیت) به چهار گروه ۶ بیتی تقسیم می‌شود: 010010 000110 010101 101100 که اعداد ۱۸، ۶، ۲۱ و ۴۴ هستند → نویسه‌های S، G، V و s.
  4. ۲ بایت باقی‌مانده (۱۶ بیت) به سه گروه ۶ بیتی تقسیم می‌شوند و در انتها ۲ بیت صفر افزوده می‌شود: 011011 000110 111100 که اعداد ۲۷، ۶ و ۶۰ هستند → نویسه‌های b، G و 8.
  5. چون ۲ بایت باقی مانده بود، یک = در انتها افزوده می‌شود.
  6. نتیجه: SGVsbG8=

رمزگشایی این مراحل را معکوس می‌کند: هر نویسه دوباره به عدد ۶ بیتی خود نگاشت می‌شود، بیت‌ها به یک جریان پیوسته متصل می‌شوند و این جریان دوباره به بایت‌های ۸ بیتی خوانده می‌شود.

فرمول طول کدگذاری‌شدهٔ Base64

برای ورودی دارای n بایت، طول کدگذاری‌شده برحسب نویسه چنین است:

encoded_length = ۴ × ⌈n / ۳⌉

در اینجا ⌈x⌉ یعنی گرد کردن به بالا تا نزدیک‌ترین عدد صحیح. این فرمول نشان می‌دهد چرا خروجی Base64 همیشه تقریباً یک‌سوم از ورودی بزرگ‌تر است: به ازای هر ۳ بایت ورودی، ۴ نویسهٔ خروجی تولید می‌شود؛ یعنی ۳۳٪ افزایش.

Base64 کجا استفاده می‌شود

  • پیوست‌های ایمیل (MIME). ایمیل برای متن ساخته شده است، بنابراین پیوست‌های فایل پیش از ارسال به Base64 تبدیل می‌شوند و فایل پیوست را حدود ۳۳٪ بزرگ‌تر از اندازهٔ اصلی می‌کنند.
  • URIهای داده. تصاویر کوچک را می‌توان مستقیماً به‌صورت متن در HTML یا CSS جاسازی کرد، مانند data:image/png;base64,iVBORw0KGgo...، و به این ترتیب درخواست جداگانه‌ای برای فایل لازم نیست. این روش برای فایل‌های کوچک مناسب‌تر است، زیرا فایل‌های بزرگ صفحه را حجیم می‌کنند و نمی‌توان آن‌ها را جداگانه در حافظهٔ نهان ذخیره کرد.
  • APIها و JSON. JSON روش بومی‌ای برای نگهداری دادهٔ دودویی خام ندارد، بنابراین فایل‌های دودویی که از طریق API مبتنی بر JSON ارسال می‌شوند، اغلب ابتدا به Base64 کدگذاری می‌شوند.
  • احراز هویت پایهٔ HTTP. سربرگ Authorization نام کاربری و گذرواژه را به‌صورت Base64 کدگذاری می‌کند؛ برای مثال Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=. این روش به‌خودی‌خود امن نیست؛ هر کسی که اطلاعات را رهگیری کند می‌تواند اعتبارنامه‌ها را بخواند، بنابراین احراز هویت پایه فقط باید روی HTTPS استفاده شود.
  • توکن‌های وب JSON (JWT). هر یک از سه بخش JWT با Base64URL کدگذاری می‌شود؛ این گونه برای قرار دادن در URL ایمن‌تر است.
  • ذخیرهٔ دادهٔ دودویی به‌صورت متن. پایگاه‌های داده یا فایل‌های پیکربندی که فقط متن می‌پذیرند، گاهی دادهٔ دودویی را به‌صورت رشتهٔ Base64 نگهداری می‌کنند.

مقایسهٔ Base64 با کدگذاری‌های دیگر

Base64 سازگار با URL نویسه‌های استاندارد + و / را با - و _ جایگزین می‌کند، زیرا + و / در URL معنای ویژه‌ای دارند. از آن برای JWTها، پارامترهای پرس‌وجوی URL و نام فایل‌ها استفاده می‌شود. این ابزار خروجی استاندارد Base64 تولید می‌کند؛ تبدیل آن به شکل سازگار با URL فقط به جابه‌جایی این دو نویسه نیاز دارد.

Base32 از الفبایی با ۳۲ نویسه استفاده می‌کند، بنابراین هر نویسه به‌جای ۶، ۵ بیت را در خود جای می‌دهد. به ازای هر ۵ بایت، ۸ نویسه تولید می‌کند؛ بنابراین سربار آن ۶۰٪ است (۸ ÷ ۵ = ۱٫۶)، در حالی که این مقدار برای Base64 برابر ۳۳٪ است. Base32 زمانی انتخاب می‌شود که خروجی باید دستی تایپ شود یا از طریق تلفن خوانده شود، زیرا از ترکیب حروف بزرگ و کوچک و نویسه‌هایی که به‌راحتی با یکدیگر اشتباه می‌شوند، پرهیز می‌کند.

مبنای شانزدهی از ۱۶ نویسه (۰–۹، A–F) استفاده می‌کند و برای هر بایت به ۲ نویسه نیاز دارد؛ بنابراین اندازه را دو برابر می‌کند (۱۰۰٪ سربار). این روش برای نمایش چکیده‌ها، رنگ‌ها و نشانی‌های MAC رایج است؛ جایی که خوانایی از فشردگی مهم‌تر است.

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

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

خطاهای رایج

  • نادیده گرفتن تبدیل UTF-8. کدگذاری متن دارای حروف اعراب‌دار یا ایموجی بدون تبدیل قبلی به بایت‌های UTF-8 می‌تواند خروجی را خراب کند.
  • حذف پرکننده. برخی سامانه‌ها نویسه‌های = انتهایی را حذف می‌کنند. بیشتر رمزگشاها در صورتی که طول رشته دوباره به مضربی از ۴ پر شود، همچنان می‌توانند آن را پردازش کنند، اما همهٔ آن‌ها این حالت را نمی‌پذیرند؛ بنابراین بهتر است پرکننده حفظ شود.
  • شکست‌خط‌های باقی‌مانده. رمزگذارهای قدیمی مبتنی بر MIME هر ۷۶ نویسه یک شکست‌خط درج می‌کنند؛ بیشتر رمزگشاهای جدید انتظار دارند رشته‌ای پیوسته و بدون این شکست‌خط‌ها دریافت کنند.
  • اشتباه گرفتن گونه‌ها. Base64 استاندارد و Base64 سازگار با URL برای همان دو جایگاه در الفبا از نویسه‌های متفاوتی استفاده می‌کنند؛ رمزگشایی با گونهٔ نادرست دادهٔ بی‌معنا یا خطا تولید می‌کند.

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

آیا Base64 نوعی رمزنگاری است؟ خیر. این یک کدگذاری متنی برگشت‌پذیر است، نه رمزنگاری. هر کسی می‌تواند رشتهٔ Base64 را فوراً و بدون گذرواژه رمزگشایی کند. اگر داده باید محرمانه بماند، از الگوریتم رمزنگاری مانند AES استفاده کنید.

چرا Base64 داده‌ها را بزرگ‌تر می‌کند؟ زیرا هر نویسهٔ کامل فقط ۶ بیت را حمل می‌کند، در حالی که یک بایت خام ۸ بیت دارد. تبدیل ۳ بایت (۲۴ بیت) به ۴ نویسه یعنی خروجی 4/3 برابر، یا حدود ۳۳٪، از ورودی بزرگ‌تر است.

آیا Base64 می‌تواند تصاویر و دیگر فایل‌های دودویی را کدگذاری کند؟ بله. هر فایل دودویی، از جمله تصاویر، PDFها و فایل‌های صوتی، می‌تواند با Base64 کدگذاری و سپس بدون تغییر حتی یک بایت رمزگشایی شود. این روش معمولاً برای تصاویر کوچک جاسازی‌شده در HTML یا CSS استفاده می‌شود، اما برای فایل‌های بزرگ انتخاب مناسبی نیست.

تفاوت Base64 و Base64URL چیست؟ Base64URL نویسه‌های استاندارد + و / را با - و _ جایگزین می‌کند تا نتیجه بدون نیاز به کدگریزی اضافی در URL یا نام فایل قرار گیرد. JWTها به همین دلیل از Base64URL استفاده می‌کنند.

چرا رشتهٔ Base64 من هنگام رمزگشایی خطای «نامعتبر» می‌دهد؟ رایج‌ترین علت‌ها نویسه‌هایی هستند که به الفبای Base64 تعلق ندارند، مانند - و _ که گونهٔ سازگار با URL از آن‌ها استفاده می‌کند، یا رشته‌ای که طول آن یک واحد بیشتر از مضربی از ۴ است. هیچ رشتهٔ معتبر Base64 چنین طولی ندارد. رمزگشایی همچنین زمانی شکست می‌خورد که بایت‌های رمزگشایی‌شده متن معتبر UTF-8 نباشند. این ابزار فاصله‌ها و شکست‌خط‌های درون رشته را نادیده می‌گیرد و رشته‌ای را که پرکنندهٔ = انتهایی آن حذف شده است نیز رمزگشایی می‌کند.

Base64 از کجا آمده است؟ این روش به طرح‌های اولیهٔ ارسال دادهٔ دودویی از طریق سامانه‌های پستیِ فقط متنی در دههٔ ۱۹۸۰ بازمی‌گردد و در سال ۱۹۹۶ به‌عنوان بخشی از MIME در RFC 2045 به‌طور رسمی استاندارد شد. مشخصات مرجع کنونی Base64، Base32 و Base16 در RFC 4648 آمده است.