راهنمای فنی
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 گذرواژه یا کلید 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 به کار ببرید. پرونده در مرورگر میماند.