Base64 چیست و چرا استفاده میشود؟
بیس ۶۴ (Base64) یک روش کدگذاری است که دادههای باینری (مانند عکس، فایل یا متنهای یونیکد) را به مجموعهای از ۶۴ کاراکتر امن ASCII تبدیل میکند. این کاراکترها شامل A-Z، a-z، 0-9 و دو علامت + و / هستند. هدف اصلی Base64، امکان انتقال دادهها در محیطهایی است که فقط از متن ساده پشتیبانی میکنند (مانند ایمیل یا URL).
الگوریتم عملکرد (بایت به کاراکتر)
فرآیند تبدیل Base64 به صورت زیر انجام میشود:
- رشته ورودی به بایتهای ۸ بیتی تبدیل میشود (در متن فارسی، UTF-8).
- این بایتها پشت سر هم قرار میگیرند و به گروههای ۲۴ بیتی (۳ بایت) تقسیم میشوند.
- هر گروه ۲۴ بیتی به ۴ بخش ۶ بیتی شکسته میشود.
- هر عدد ۶ بیتی (بین ۰ تا ۶۳) به یکی از کاراکترهای جدول استاندارد Base64 نگاشت میشود.
3 Bytes Input (24 bits)
10101010 11001100 00110011
⬇ Becomes 4 Groups of 6 bits ⬇
101010 101100 110000 110011
4 Chars Output
مثالهای کاربردی (فارسی و انگلیسی)
فارسی
کلمه "سلام"
Input (UTF-8 Bytes)
2Niz2Yxh2o0=
انگلیسی
کلمه "Admin"
QWRtaW4=
اشتباهات رایج
- !اشتباه گرفتن با رمزنگاری: Base64 رمزنگاری (Encryption) نیست! بلکه فقط کدگذاری (Encoding) است و هر کسی میتواند به راحتی آن را دیکود کند. برای امنیت از آن استفاده نکنید.
- !مشکل UTF-8: بسیاری از برنامهنویسان با استفاده از تابع
btoaروی متون فارسی خطا دریافت میکنند. متون غیرلاتین باید ابتدا به بایتهای UTF-8 تبدیل شوند.
پرسشهای متداول
چرا کد Base64 حدود ۳۳٪ حجم فایل را افزایش میدهد؟▼
چون ما هر ۳ بایت (۲۴ بیت) داده اصلی را به ۴ کاراکتر (۴ بایت در اسکی) تبدیل میکنیم. نسبت ۴ به ۳ باعث افزایش تقریباً ۳۳ درصدی حجم میشود.
Data URI چیست؟▼
روشی است که با استفاده از Base64، فایلها (مثل عکس یا فونت) را مستقیماً درون کدهای HTML یا CSS قرار میدهند. فرمت آن به صورت data:[type];base64,[code] است.
