ما هو Base64؟ النشأة وطريقة العمل والاستخدامات
تعرّف إلى أصل Base64 وكيف يحوّل 3 بايت إلى 4 محارف، ومعنى الحشو وbase64url، ومتى يكون استخدامه مناسباً.
Base64 في جملة واحدة
Base64 هو ترميز يحوّل البيانات الثنائية إلى نص: يأخذ أي سلسلة من البايتات ويعرضها كسلسلة من أبجدية صغيرة واسعة التوافق. لا يفسّر إن كانت البايتات صورة أو PDF أو كلمة؛ بل يضعها في غلاف يناسب الأنظمة النصية.
التحويل قابل للعكس ولا يفقد البيانات، لكنه ليس تشفيراً ولا تجزئة ولا ضغطاً.
من أين جاء Base64
لم تكن الشبكات وأنظمة البريد المبكرة تنقل قيم 8 بت العشوائية دائماً من دون تغيير. بعض البوابات توقعت نصاً قابلاً للطباعة من 7 بت وقد تعدّل البيانات الثنائية. عالجت طرق أقدم مثل uuencode المشكلة نفسها، ويعد الترميز القابل للطباعة ذي 64 محرفاً في RFC 1421 لبريد Privacy-Enhanced Mail سلفاً مباشراً لـ Base64 الحديث.
سمّى MIME لاحقاً Base64 كترميز لنقل أجسام الرسائل ومرفقاتها. وأصبح RFC 4648 الصادر عام 2006 المرجع العام للأبجدية القياسية والآمنة لعناوين URL. لذلك نشأ Base64 من تطور معايير متوافقة، لا من اختراع منفرد معزول.
لماذا 64 محرفاً وكيف تعمل قاعدة 3 إلى 4
تمثّل ست بتات 64 قيمة تماماً، من 0 إلى 63. يربط Base64 القياسي هذه القيم بالمحارف A–Z وa–z و0–9 و+ و/. يقرأ المرمّز ثلاثة بايتات، أي 24 بتاً، ثم يعيد تقسيمها إلى أربع مجموعات من 6 بتات. تصبح كل قيمة فهرساً في الأبجدية وتنتج محرفاً.
في “Man” تنتج بايتات ASCII/UTF-8 الفهارس 19 و22 و5 و46، أي T وW وF وu. النتيجة TWFu، وفك الترميز يسلك الطريق نفسه بالعكس.
- الإدخال
Man- بايتات الإدخال
01001101 01100001 01101110- مجموعات 6 بت
010011 010110 000101 101110- فهارس الأبجدية
19 · 22 · 5 · 46- ناتج Base64
TWFu
الحشو وUnicode وbase64url
إذا احتوت الكتلة الأخيرة بايتاً واحداً ينتج محرفان فعليان ثم ==، وإذا احتوت بايتين تنتج ثلاثة محارف ثم =. الحشو لا يخفي شيئاً؛ بل يبيّن مقدار البيانات الحقيقية في آخر كتلة من 24 بتاً. تحذفه بعض البروتوكولات عندما يكون الطول معروفاً بطريقة أخرى.
يتعامل Base64 مع البايتات. يجب تحويل العربية أو 中文 أو الرموز التعبيرية أولاً إلى بايتات، عادة بترميز UTF-8. يستبدل base64url الرمزين + و/ بـ - و_ لملاءمة الروابط وأسماء الملفات. الأبجديتان مرتبطتان، لكن لا ينبغي خلطهما من دون الرجوع إلى البروتوكول.
متى يكون Base64 مفيداً فعلاً
من الاستخدامات الشائعة مرفقات MIME وكتل PEM للشهادات أو المفاتيح وروابط data: للصور أو الخطوط الصغيرة. قد يحمل JSON وXML بيانات ثنائية صغيرة كسلسلة Base64. تستخدم بيانات HTTP Basic ترميز Base64 وتستخدم مقاطع JWT صيغة base64url؛ ولا يجعل أي منهما المحتوى سرياً.
الفكرة هي التوافق: القناة الخارجية تريد نصاً، بينما الحمولة بايتات. إذا كان رفع الملفات أو تخزين الكائنات أو BLOB يدعم البيانات الثنائية مباشرة، فقد لا يضيف Base64 فائدة.
كلفة الحجم والأداء
تتحول كل ثلاثة بايتات كاملة إلى أربعة محارف. الطول الدقيق هو 4 × ceil(n / 3)، لذلك تقترب الزيادة من 33.3% للمدخلات الكبيرة وقد ترتفع للصغيرة. تضيف فواصل الأسطر أو بادئة data: URL مقداراً آخر.
قد يقلل الضغط في طبقة أخرى حجم النقل، لكن الترميز يستهلك الذاكرة والمعالج. غالباً يكون النقل الثنائي المباشر أوضح للملفات الكبيرة.
ما الذي لا يفعله Base64
لا يوفر Base64 السرية أو الأصالة؛ يستطيع أي شخص فك السلسلة وتعديلها بلا مفتاح. لا تستخدمه لحماية كلمات المرور أو رموز API أو البيانات الشخصية. استخدم التشفير وTLS للسرية، والتجزئة التشفيرية للبصمة، والتوقيع أو MAC لكشف العبث.
القاعدة المختصرة: استخدم Base64 لعبور حدود النص، لا لحماية حدود الأمان.