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

ابزار آنلاین رایگان برای رمزگذاری متن به Base64 یا رمزگشایی رشته‌های Base64 به متن. از رمزگذاری Base64 استاندارد و ایمن برای URL پشتیبانی می‌کند و تبدیل آنی را ارائه می‌دهد.

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

📚

مستندات

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

مقدمه

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

مجموعه کاراکترهای Base64 شامل:

  • حروف بزرگ A-Z (26 کاراکتر)
  • حروف کوچک a-z (26 کاراکتر)
  • اعداد 0-9 (10 کاراکتر)
  • دو کاراکتر اضافی، معمولاً "+" و "/" (2 کاراکتر)

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

نحوه کار رمزگذاری Base64

فرآیند رمزگذاری

رمزگذاری Base64 با تبدیل هر گروه از سه بایت (24 بیت) داده باینری به چهار کاراکتر Base64 کار می‌کند. این فرآیند مراحل زیر را دنبال می‌کند:

  1. تبدیل متن ورودی به نمایش باینری آن (با استفاده از ASCII یا UTF-8)
  2. گروه‌بندی داده‌های باینری به قطعات 24 بیتی (3 بایت)
  3. تقسیم هر قطعه 24 بیتی به چهار گروه 6 بیتی
  4. تبدیل هر گروه 6 بیتی به کاراکتر Base64 مربوطه

زمانی که طول ورودی بر 3 بخش‌پذیر نیست، با کاراکترهای "=" پر می‌شود تا نسبت طول خروجی به ورودی 4:3 حفظ شود.

نمایش ریاضی

برای یک دنباله از بایت‌ها b1,b2,b3b_1, b_2, b_3، کاراکترهای Base64 مربوطه c1,c2,c3,c4c_1, c_2, c_3, c_4 به‌صورت زیر محاسبه می‌شوند:

c1=Base64[(b1>>2)]c_1 = \text{Base64}[(b_1 >> 2)] c2=Base64[((b1&3)<<4)(b2>>4)]c_2 = \text{Base64}[((b_1 \& 3) << 4) | (b_2 >> 4)] c3=Base64[((b2&15)<<2)(b3>>6)]c_3 = \text{Base64}[((b_2 \& 15) << 2) | (b_3 >> 6)] c4=Base64[(b3&63)]c_4 = \text{Base64}[(b_3 \& 63)]

که در آن Base64[i]\text{Base64}[i] نمایانگر کاراکتر ii-ام در الفبای Base64 است.

فرآیند رمزگشایی

رمزگشایی Base64 فرآیند رمزگذاری را معکوس می‌کند:

  1. تبدیل هر کاراکتر Base64 به مقدار 6 بیتی آن
  2. متصل کردن این مقادیر 6 بیتی
  3. گروه‌بندی بیت‌ها به قطعات 8 بیتی (بایت‌ها)
  4. تبدیل هر بایت به کاراکتر مربوطه آن

پر کردن

زمانی که تعداد بایت‌ها برای رمزگذاری بر 3 بخش‌پذیر نیست، پر کردن اعمال می‌شود:

  • اگر یک بایت باقی‌مانده باشد، به دو کاراکتر Base64 تبدیل می‌شود و سپس "==" اضافه می‌شود
  • اگر دو بایت باقی‌مانده باشد، به سه کاراکتر Base64 تبدیل می‌شود و سپس "=" اضافه می‌شود

مثال

بیایید متن "Hello" را به Base64 رمزگذاری کنیم:

  1. نمایش ASCII "Hello": 72 101 108 108 111
  2. نمایش باینری: 01001000 01100101 01101100 01101100 01101111
  3. گروه‌بندی به قطعات 6 بیتی: 010010 000110 010101 101100 011011 000110 1111
  4. قطعه آخر فقط 4 بیت دارد، بنابراین با صفرها پر می‌شود: 010010 000110 010101 101100 011011 000110 111100
  5. تبدیل به دهدهی: 18, 6, 21, 44, 27, 6, 60
  6. جستجو در الفبای Base64: S, G, V, s, b, G, 8
  7. نتیجه "SGVsbG8=" است

به یاد داشته باشید که "=" در انتها به دلیل اینکه طول ورودی (5 بایت) بر 3 بخش‌پذیر نیست، اضافه شده است.

فرمول

فرمول کلی برای محاسبه طول رشته رمزگذاری شده Base64 به‌صورت زیر است:

encoded_length=4×input_length3\text{encoded\_length} = 4 \times \lceil \frac{\text{input\_length}}{3} \rceil

که در آن x\lceil x \rceil نمایانگر تابع سقف (گرد کردن به نزدیک‌ترین عدد صحیح) است.

استفاده از ابزار رمزگذار/رمزگشای Base64

ابزار Base64 ما یک روش ساده و کارآمد برای رمزگذاری متن به Base64 یا رمزگشایی Base64 به متن ارائه می‌دهد. در اینجا نحوه استفاده از آن آمده است:

استفاده پایه

  1. انتخاب حالت عملیاتی: گزینه "رمزگذاری" را انتخاب کنید تا متن را به Base64 تبدیل کنید، یا "رمزگشایی" را انتخاب کنید تا Base64 را به متن تبدیل کنید.
  2. وارد کردن ورودی خود: متن یا رشته Base64 خود را در فیلد ورودی تایپ یا چسباندن کنید.
  3. تبدیل: روی دکمه "رمزگذاری به Base64" یا "رمزگشایی از Base64" کلیک کنید تا تبدیل انجام شود.
  4. کپی کردن نتیجه: از دکمه "کپی" برای کپی کردن نتیجه به کلیپ بورد خود استفاده کنید.

ویژگی تبدیل زنده

ابزار ما اکنون شامل گزینه تبدیل زنده است که خروجی را در حین تایپ به‌طور خودکار به‌روزرسانی می‌کند:

  1. فعال‌سازی تبدیل زنده: کادر "تبدیل زنده" را در بالای ابزار علامت‌گذاری کنید.
  2. مشاهده نتایج فوری: در حین تایپ در فیلد ورودی، خروجی به‌طور خودکار به‌روزرسانی می‌شود بدون نیاز به کلیک روی دکمه تبدیل.
  3. تغییر به‌دلخواه: می‌توانید در هر زمان بر اساس ترجیحات خود تبدیل زنده را فعال یا غیرفعال کنید.

ویژگی تبدیل زنده به‌ویژه در موارد زیر مفید است:

  • کار با متن یا رشته‌های Base64 کوتاه تا متوسط
  • ایجاد تغییرات تدریجی و نیاز به بازخورد فوری
  • بررسی اینکه چگونه کاراکترهای مختلف رمزگذاری/رمزگشایی می‌شوند
  • یادگیری در مورد الگوهای رمزگذاری Base64

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

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

رمزگذاری Base64 در برنامه‌های مختلف به‌طور گسترده‌ای استفاده می‌شود:

  1. پیوست‌های ایمیل: MIME (توسعه چندرسانه‌ای ایمیل اینترنتی) از Base64 برای رمزگذاری پیوست‌های باینری در ایمیل استفاده می‌کند.

  2. URLهای داده: جاسازی تصاویر کوچک، فونت‌ها یا منابع دیگر به‌طور مستقیم در HTML، CSS یا JavaScript با استفاده از طرح URL data:.

  3. ارتباطات API: انتقال ایمن داده‌های باینری در بارهای JSON یا سایر فرمت‌های متنی API.

  4. ذخیره داده‌های باینری در فرمت‌های متنی: زمانی که داده‌های باینری باید در XML، JSON یا سایر فرمت‌های مبتنی بر متن ذخیره شوند.

  5. سیستم‌های احراز هویت: احراز هویت پایه در HTTP از رمزگذاری Base64 استفاده می‌کند (اگرچه این کار برای امنیت نیست، بلکه فقط برای رمزگذاری است).

  6. رمزنگاری: به‌عنوان بخشی از پروتکل‌ها و سیستم‌های رمزنگاری مختلف، اغلب برای رمزگذاری کلیدها یا گواهینامه‌ها.

  7. مقدارهای کوکی: رمزگذاری ساختارهای داده پیچیده برای ذخیره در کوکی‌ها.

جایگزین‌ها

در حالی که Base64 به‌طور گسترده‌ای استفاده می‌شود، جایگزین‌هایی وجود دارند که ممکن است در شرایط خاص مناسب‌تر باشند:

  1. Base64 ایمن برای URL: یک نوع که به‌جای "+" و "/" از "-" و "_" استفاده می‌کند تا از مشکلات رمزگذاری URL جلوگیری کند. برای داده‌هایی که در URLها گنجانده می‌شوند، مفید است.

  2. Base32: از مجموعه 32 کاراکتر استفاده می‌کند که خروجی طولانی‌تری را ایجاد می‌کند اما با خوانایی بهتر و عدم حساسیت به حروف بزرگ و کوچک.

  3. رمزگذاری هگز: تبدیل ساده به هگزادسیمال، که کمتر کارآمد است (اندازه را دو برابر می‌کند) اما بسیار ساده و به‌طور گسترده‌ای پشتیبانی می‌شود.

  4. انتقال باینری: برای فایل‌های بزرگ یا زمانی که کارایی مهم است، پروتکل‌های انتقال باینری مستقیم مانند HTTP با هدرهای مناسب Content-Type ترجیح داده می‌شوند.

  5. فشرده‌سازی + Base64: برای داده‌های متنی بزرگ، فشرده‌سازی قبل از رمزگذاری می‌تواند افزایش اندازه را کاهش دهد.

  6. سریال‌سازی JSON/XML: برای داده‌های ساختاریافته، استفاده از سریال‌سازی بومی JSON یا XML ممکن است مناسب‌تر از رمزگذاری Base64 باشد.

تاریخچه

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

مشخصات رسمی Base64 برای اولین بار در سال 1987 به‌عنوان بخشی از RFC 989 منتشر شد که ایمیل خصوصی را تعریف می‌کرد (PEM). این بعداً در RFC 1421 (1993) و RFC 2045 (1996، به‌عنوان بخشی از MIME) به‌روزرسانی شد.

اصطلاح "Base64" از این واقعیت ناشی می‌شود که رمزگذاری از 64 کاراکتر ASCII مختلف برای نمایندگی داده‌های باینری استفاده می‌کند. این انتخاب 64 کاراکتر عمدی بود، زیرا 64 یک توان از 2 (2^6) است که تبدیل بین باینری و Base64 را کارآمد می‌سازد.

با گذشت زمان، چندین نوع مختلف Base64 پدیدار شده‌اند:

  • Base64 استاندارد: همان‌طور که در RFC 4648 تعریف شده است، با استفاده از A-Z، a-z، 0-9، +، / و = برای پر کردن
  • Base64 ایمن برای URL: از - و _ به‌جای + و / استفاده می‌کند تا از مشکلات رمزگذاری URL جلوگیری کند
  • Base64 ایمن برای نام فایل: مشابه ایمن برای URL، طراحی شده برای استفاده در نام فایل‌ها
  • Base64 اصلاح‌شده برای IMAP: در پروتکل IMAP با مجموعه‌ای متفاوت از کاراکترهای خاص استفاده می‌شود

با وجود اینکه بیش از سه دهه از عمر آن می‌گذرد، Base64 همچنان ابزاری اساسی در محاسبات مدرن است، به‌ویژه با ظهور برنامه‌های وب و APIهایی که به‌شدت به فرمت‌های داده متنی مانند JSON وابسته هستند.

مثال‌های کد

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

1// رمزگذاری/رمزگشایی Base64 در جاوااسکریپت
2function encodeToBase64(text) {
3  return btoa(text);
4}
5
6function decodeFromBase64(base64String) {
7  try {
8    return atob(base64String);
9  } catch (e) {
10    throw new Error("رشته Base64 نامعتبر است");
11  }
12}
13
14// مثال استفاده
15const originalText = "Hello, World!";
16const encoded = encodeToBase64(originalText);
17console.log("رمزگذاری شده:", encoded);  // SGVsbG8sIFdvcmxkIQ==
18
19try {
20  const decoded = decodeFromBase64(encoded);
21  console.log("رمزگشایی شده:", decoded);  // Hello, World!
22} catch (error) {
23  console.error(error.message);
24}
25

پیاده‌سازی جاوااسکریپت با تبدیل زنده

در اینجا یک مثال از نحوه پیاده‌سازی ویژگی تبدیل زنده در جاوااسکریپت آورده شده است:

1// پیاده‌سازی جاوااسکریپت با تبدیل زنده
2const textInput = document.getElementById('text-input');
3const base64Output = document.getElementById('base64-output');
4const liveConversionCheckbox = document.getElementById('live-conversion');
5let debounceTimeout = null;
6
7// تابع برای رمزگذاری با تأخیر برای عملکرد
8function liveEncode() {
9  // پاک کردن هر زمان‌بندی موجود
10  if (debounceTimeout) {
11    clearTimeout(debounceTimeout);
12  }
13  
14  // تنظیم یک زمان‌بندی جدید برای جلوگیری از پردازش بیش از حد در حین تایپ سریع
15  debounceTimeout = setTimeout(() => {
16    try {
17      const text = textInput.value;
18      if (text.trim()) {
19        base64Output.value = btoa(text);
20      } else {
21        base64Output.value = '';
22      }
23    } catch (e) {
24      console.error('خطای رمزگذاری:', e);
25      // در UI به‌طور مناسب خطا را مدیریت کنید
26    }
27  }, 300); // تأخیر 300 میلی‌ثانیه
28}
29
30// شنونده‌های رویداد
31liveConversionCheckbox.addEventListener('change', function() {
32  if (this.checked) {
33    // فعال‌سازی تبدیل زنده
34    textInput.addEventListener('input', liveEncode);
35    // رمزگذاری اولیه
36    liveEncode();
37  } else {
38    // غیرفعال‌سازی تبدیل زنده
39    textInput.removeEventListener('input', liveEncode);
40  }
41});
42

موارد حاشیه‌ای و ملاحظات

هنگام کار با رمزگذاری و رمزگشایی Base64، به این نکات مهم توجه داشته باشید:

  1. یونی‌کد و کاراکترهای غیر ASCII: هنگام رمزگذاری متنی با کاراکترهای غیر ASCII، اطمینان حاصل کنید که قبل از رمزگذاری Base64، رمزگذاری کاراکتر مناسب (معمولاً UTF-8) انجام شده باشد.

  2. پر کردن: Base64 استاندارد از کاراکترهای "=" برای پر کردن استفاده می‌کند تا اطمینان حاصل شود که طول خروجی مضرب 4 است. برخی پیاده‌سازی‌ها اجازه می‌دهند که پر کردن حذف شود که می‌تواند باعث مشکلات سازگاری شود.

  3. شکست خط: پیاده‌سازی‌های سنتی Base64 شکست خط (معمولاً هر 76 کاراکتر) را برای خوانایی وارد می‌کنند، اما برنامه‌های مدرن معمولاً این کار را حذف می‌کنند.

  4. Base64 ایمن برای URL: Base64 استاندارد از کاراکترهای "+" و "/" استفاده می‌کند که در URLها معانی خاصی دارند. برای زمینه‌های URL، از Base64 ایمن برای URL استفاده کنید که این کاراکترها را با "-" و "_" جایگزین می‌کند.

  5. فضای خالی: هنگام رمزگشایی، برخی از پیاده‌سازی‌ها نرم‌خو هستند و فضای خالی را نادیده می‌گیرند، در حالی که دیگران به ورودی دقیق نیاز دارند.

  6. افزایش اندازه: رمزگذاری Base64 به‌طور تقریبی اندازه داده‌ها را 33% افزایش می‌دهد (4 بایت خروجی برای هر 3 بایت ورودی).

  7. عملکرد: رمزگذاری/رمزگشایی Base64 می‌تواند برای داده‌های بسیار بزرگ محاسباتی سنگین باشد. ابزار ما از تأخیر برای حفظ پاسخگویی حتی با ورودی‌های بزرگ‌تر استفاده می‌کند.

  8. ملاحظات تبدیل زنده: وقتی از ویژگی تبدیل زنده با ورودی‌های بسیار بزرگ استفاده می‌کنید، ممکن است کمی تأخیر را مشاهده کنید زیرا ابزار داده‌ها را پردازش می‌کند. این طبیعی است و به حفظ عملکرد مرورگر کمک می‌کند.

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

ویژگی تبدیل زنده چیست؟

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

آیا تبدیل زنده با ورودی‌های بزرگ مرورگر من را کند می‌کند؟

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

چه زمانی باید از تبدیل زنده استفاده کنم و چه زمانی از تبدیل دستی؟

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

آیا تبدیل زنده برای هر دو جهت رمزگذاری و رمزگشایی کار می‌کند؟

بله، ویژگی تبدیل زنده در هر دو جهت کار می‌کند - از متن به Base64 و از Base64 به متن.

چه اتفاقی می‌افتد اگر در حین فعال بودن تبدیل زنده ورودی نامعتبر Base64 وارد کنم؟

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

منابع

  1. RFC 4648 - رمزگذاری‌های داده Base16، Base32 و Base64
  2. RFC 2045 - بخش اول MIME: فرمت بدنه‌های پیام اینترنتی
  3. MDN Web Docs: رمزگذاری و رمزگشایی Base64
  4. Base64 - ویکی‌پدیا
  5. MIME - ویکی‌پدیا

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