راهنمای فنی

Base64 رمزنگاری نیست: واقعاً چه می‌کند و چگونه رمزگشایی می‌شود

Base64 کدگذاری است، نه رمزنگاری. چرا گذرواژه را پنهان نمی‌کند، چرا بزرگ‌تر می‌شود، و چگونه آن را باز کنید.

پاسخ کوتاه

Base64 کدگذاری است، نه رمزنگاری. دادهٔ دودویی را به متنی تبدیل می‌کند که سامانه‌های متن‌محور بتوانند ذخیره یا بفرستند.

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

از Base64 برای محافظت از گذرواژه، کلید API، توکن دسترسی، پیام خصوصی یا راز دیگر استفاده نکنید. ابزار نمایش است، نه سازوکار امنیتی.

اگر رشته درهم به نظر برسد، معنایش رمزنگاری‌شده بودن نیست. Base64 فقط نحوهٔ نوشتن بایت‌ها به صورت متن را عوض می‌کند.

Base64 واقعاً چه می‌کند؟

Base64 دادهٔ دودویی را با مجموعهٔ محدود ASCII کد می‌کند: A–Z، a–z، 0–9، + و /. پدینگ = ممکن است بیاید تا طول خروجی مضرب ۴ بماند. پدینگ همیشه نیست—ورودی کوتاه ممکن است یک یا دو = داشته باشد و بعضی قالب‌ها آن را حذف می‌کنند.

Hello

Hello

Base64

SGVsbG8=

SGVsbG8= را باز کنید و دوباره Hello می‌گیرید. این رفت‌وبرگشت کلید نمی‌خواهد.

  • دادهٔ اصلی
  • Hello
  • کدگذاری Base64
  • SGVsbG8=
  • باز کردن Base64
  • Hello
Base64 با باز کردن برگشت‌پذیر است. هر کس متن را داشته باشد معمولاً می‌تواند.

Base64 در برابر رمزنگاری: تفاوت چیست؟

Base64 برای نمایش و سازگاری است. محتوا را پنهان نمی‌کند. رمزنگاری برای محرمانگی است و از مادهٔ کلید رمزنگاری استفاده می‌کند. باز کردن Base64 رمزگشایی نیست. سامانه‌های کلید عمومی هم کلید دارند؛ بگویید «کلید رمزنگاری مناسب»، نه «یک راز مشترک برای هر نوع رمزنگاری». درهم‌سازی ایدهٔ سوم است: خلاصه، نه کدگذاری برگشت‌پذیر.

  • کدگذاری
  • بدون کلید مخفی
  • برای هر کس برگشت‌پذیر
  • رمزنگاری
  • حفاظت رمزنگاری
  • برای رمزگشایی کلید درست لازم است
کدگذاری نمایش را عوض می‌کند. رمزنگاری می‌خواهد محتوا محرمانه بماند.

سه کار متفاوت:

روش هدف اصلی نیاز به راز
Base64 کد کردن داده به صورت متن خیر
رمزنگاری حفظ محرمانگی بله / مادهٔ کلید
درهم‌سازی خلاصهٔ یک‌طرفه بدون رمزگشایی

آیا Base64 امن است؟

Base64 به‌تنهایی محرمانگی نمی‌دهد. متن ممکن است تیره به نظر برسد، اما آن ویژگی امنیتی نیست. رمزگشای معمولی بایت‌ها را برمی‌گرداند. معنایش این نیست که «Base64 به‌عنوان فناوری ناامن است». کدگذاری عادی است. سازوکار امنیتی نیست. امنیت به سامانه و کنترل‌های اطراف بستگی دارد.

می‌توان با Base64 گذرواژه یا کلید API را پنهان کرد؟

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

اگر رمزنگاری نیست چرا Base64 به کار می‌رود؟

سامانه‌هایی که متن انتظار دارند اغلب دودویی خام را حمل نمی‌کنند. Base64 برای نمایش دودویی در قالب متن، جاسازی منابع دودویی کوچک، عبور بایت از کانال فقط‌متنی، ساخت Data URL، حضور در برخی بافت‌های نامه/MIME و پر کردن بار API وقتی طرح Base64 می‌خواهد به کار می‌رود. APIها Base64 را «برای امنیت» به کار نمی‌برند. برای سازگاری به کار می‌برند.

چرا Base64 داده را بزرگ‌تر می‌کند؟

Base64 استاندارد با پدینگ ۳ بایت ورودی را به ۴ نویسه می‌نگارد. طول برابر است با 4 × ceil(n / 3) که n شمار بایت ورودی است. سه بایت ۴ نویسه می‌شود؛ شش تا ۸. برای بار خام بزرگ تقریباً ۳۳٪ بزرگ‌تر است—حدود یک‌سوم. ورودی کوچک به‌خاطر پدینگ فرق می‌کند: یک بایت QQ== می‌شود (۴ نویسه). نقل‌قول JSON، پیشوند Data URL، فشرده‌سازی یا کدگذاری انتقال اضافه ممکن است اندازهٔ ذخیره‌شده یا ارسالی را باز هم عوض کند. Base64 داده را فشرده نمی‌کند.

Base64URL چیست؟

Base64URL گونهٔ امن برای URL و نام پرونده از همان کدگذاری است—رمزنگاری نیست. + به - و / به _ بدل می‌شود و پدینگ اغلب حذف می‌شود. رمز Base64 می‌تواند Base64 استاندارد و Base64URL را کد و باز کند. قاعدهٔ پدینگ به مشخصات بستگی دارد. این ابزار رمزگشای JWT نیست.

آیا Base64 تصویر و پرونده را کد می‌کند؟

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

Data URL با Base64 چیست؟

Data URL می‌تواند نوع رسانه، نشان کدگذاری و بایت‌های کدشده را در یک رشته جمع کند:

data:image/png;base64,...

برای دارایی کوچک راحت است. گذاشتن پروندهٔ بزرگ در Data URL همیشه ایدهٔ خوبی نیست: رشته دراز می‌شود و صفحه ممکن است کند شود. آن را بده‌بستان ببینید، نه پیش‌فرض.

کدگذاری در برابر رمزنگاری در برابر درهم‌سازی

کدگذاری (از جمله Base64) برای نمایش است و بدون راز برگشت‌پذیر است. رمزنگاری برای محرمانگی است و مادهٔ کلید رمزنگاری دارد. درهم‌سازی خلاصه‌ای می‌سازد که عموماً یک‌طرفه طراحی شده. طول خروجی به الگوریتم بستگی دارد—SHA-256 و SHA-512 هم‌اندازه نیستند. ساخت هش SHA آن خلاصه‌ها را نشان می‌دهد؛ رمزنگاری نمی‌کند و جای Base64 را نمی‌گیرد.

اشتباه‌های رایج Base64

دانستن Base64 به‌عنوان رمزنگاری
فقط ظاهر بایت‌ها را به‌صورت متن عوض می‌کند.

ذخیرهٔ راز به‌صورت Base64 ساده
هر کس مقدار کدشده را داشته باشد می‌تواند باز کند.

فرض اینکه Base64 داده را فشرده می‌کند
نمی‌کند. شکل متنی معمولاً بزرگ‌تر است.

فراموش کردن افزایش اندازه
برای بار خام بزرگ حدود یک‌سوم بیشتر برنامه‌ریزی کنید.

قاطی کردن Base64 با Base64URL
الفبا فرق دارد. رمزگشا ممکن است گونهٔ غلط را رد کند.

باز کردن با کدگذاری نویسهٔ غلط
Base64 بایت برمی‌گرداند. متن هنوز به کدگذاری مطابق نیاز دارد، معمولاً UTF-8.

فرض اینکه = همیشه هست
پدینگ وقتی لازم است به کار می‌رود. بعضی رشته‌ها ندارند.

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

Base64 روی بایت کار می‌کند، نه نویسه. متن باید اول بایت شود—معمولاً UTF-8. کره‌ای، ژاپنی، عربی و ایموجی به آن گام نیاز دارند. btoa() مرورگر روی رشتهٔ یونیکد ممکن است شکست بخورد. رمز Base64 بایت UTF-8 را کد می‌کند پس آن متن رفت‌وبرگشت می‌شود. اگر با مجموعهٔ نویسهٔ غلط باز کنید، Base64 ممکن است معتبر باشد و حروف باز هم غلط دیده شوند.

قفل نیست

Base64 محرمانگی نمی‌دهد. هر کس مقدار کدشده را داشته باشد معمولاً می‌تواند باز کند. متن درهم‌شکل را راز محافظت‌شده ندانید.

در مرورگر Base64 را کد یا باز کنید

NEXNARA رمز Base64 متن UTF-8 و پرونده را محلی تبدیل می‌کند.

می‌توانید Base64 استاندارد و Base64URL را کد یا باز کنید، پرونده را به Base64 خام یا Data URL بدل کنید، و Base64 یا Data URL را به بارگیری برگردانید. ورودی نامعتبر رد می‌شود نه اینکه از کار بیفتد. فاصله نادیده گرفته می‌شود؛ پدینگ ناقص کامل می‌شود.

پروندهٔ بالای ۱۰ MB ممکن است زبانه را کند کند. پروندهٔ بالای ۳۲ MB در مرورگر پردازش نمی‌شود.

خود پردازش Base64 در مرورگر شما رخ می‌دهد. متن یا پرونده برای این ابزار به کارساز NEXNARA فرستاده نمی‌شود. تبلیغ و دیگر قابلیت‌های سایت هنوز شبکه را به کار می‌برند؛ آن جدا از پردازش است.

باید Base64 را کد یا باز کنید؟ رمز Base64 را باز کنید و متن را بچسبانید یا پرونده بیندازید.

FAQ

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

نه. Base64 کدگذاری است. نمایش را عوض می‌کند. محرمانگی را حفظ نمی‌کند.

آیا Base64 امن است؟

Base64 سازوکار امنیتی نیست. کدگذاری عادی است. هر کس متن را داشته باشد معمولاً می‌تواند باز کند. امنیت به بقیهٔ سامانه بستگی دارد.

می‌توان Base64 را بدون گذرواژه باز کرد؟

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

چرا Base64 اندازهٔ پرونده را زیاد می‌کند؟

هر ۳ بایت در Base64 استاندارد با پدینگ ۴ نویسه می‌شود (طول 4 × ceil(n / 3)). برای بار خام بزرگ حدود ۳۳٪ بیشتر است. پدینگ ممکن است نسبت را روی ورودی خیلی کوچک عوض کند.

تفاوت Base64 و Base64URL چیست؟

Base64URL به‌جای + و / از - و _ استفاده می‌کند و اغلب پدینگ = را حذف می‌کند. هر دو کدگذاری‌اند. رمز Base64 هر دو الفبا را پشتیبانی می‌کند.

آیا Base64 تصویر و پرونده را کد می‌کند؟

بله. نتیجه متن است، نه پروندهٔ کوچک‌تر. در رمز Base64 حالت پرونده را برای Base64 خام یا Data URL به کار ببرید. پرونده در مرورگر می‌ماند.

راهنمای فنی

چرا Base64 پرونده‌ها را بزرگ‌تر می‌کند؟

Base64 معمولاً دادهٔ دودویی را حدود یک‌سوم بزرگ‌تر می‌کند. ساختار 3 بایت به 4 نویسه، پدینگ، هزینهٔ اضافهٔ Data URL و زمانی که آن اندازه می‌ارزد را ببینید.

راهنمای فنی

JPG در برابر PNG برای نماگرفت: کدام کوچک‌تر است؟

JPG یا PNG را برای نماگرفت بر اساس محتوا برگزینید: UI و متن اغلب تیزتر در PNG می‌مانند؛ فریم‌های پُرعکس ممکن است به‌صورت JPEG کوچک‌تر شوند.

راهنمای فنی

چرا JSON.parse می‌گوید "Unexpected token"؟

JSON.parse وقتی متن JSON معتبر نیست Unexpected token پرتاب می‌کند. گیومهٔ تکی، ویرگول انتهایی، پاسخ HTML و موقعیت خطا را عیب‌یابی کنید.

راهنمای فنی

چگونه حجم فایل تصویر را کم کنیم بدون اینکه تار شود

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

راهنمای فنی

از Unix Timestamp به تاریخ: ثانیه، میلی‌ثانیه و UTC توضیح داده شده

Unix timestamp را به تاریخ تبدیل کنید. ثانیه در برابر میلی‌ثانیه، UTC در برابر وقت محلی، ISO 8601 و برگشت از تاریخ به زمان epoch را ببینید.