ترميز Base64 وفك ترميزه: ما هو ولماذا تُفسد أغلب الأدوات النص العربي

person فريق سهلcalendar_today ١٤ أكتوبر ٢٠٢٦schedule 4 دقيقة قراءة
نص عربي يتحول إلى سلسلة Base64 والعكس

تصادف سلسلة طويلة من الحروف والأرقام تنتهي بعلامة أو علامتَي يساوي، فتعرف أنها Base64. ثم يأتي السؤال الأهم: ما الذي بداخلها؟ ولماذا وُضعت بهذه الصورة أصلاً؟ الإجابة الشائعة — «لإخفائها» — خاطئة تماماً، وهذا الخطأ تحديداً هو سبب عدد غير قليل من الثغرات الأمنية.

Base64 ترميز لا تشفير

الفرق بين الترميز والتشفير جوهري: التشفير يحتاج مفتاحاً لفكّه، أما الترميز فيفكّه أي شخص في ثانية واحدة دون أن يملك شيئاً. Base64 من النوع الثاني. هو ببساطة طريقة لكتابة بيانات — قد تكون صورة أو ملفاً أو نصاً — باستخدام 64 حرفاً آمناً فقط: الحروف الإنجليزية الكبيرة والصغيرة، والأرقام، وعلامتان إضافيتان.

سبب وجوده أن كثيراً من الأنظمة القديمة والبروتوكولات النصية لا تنقل البيانات الثنائية بأمان: قد يحذف بعضها محارف معيّنة، وقد يفسّر بعضها بايتاً ما على أنه نهاية الرسالة. فإذا حوّلت البيانات إلى هذه الأحرف الـ64 فقط، مرّت سليمة عبر أي وسط نصي.

إن كان في ذهنك أن تضع كلمة مرور أو مفتاحاً في Base64 «حتى لا يراه أحد»، فاعلم أن أي متصفح يفكّه فوراً. الترميز يجعل البيانات قابلة للنقل، لا سرّية.

ثمن الترميز: البيانات تكبر

هذه نقطة عملية يجهلها كثيرون. Base64 يمثّل كل ثلاثة بايتات بأربعة أحرف، أي أن حجم الناتج يزيد بنحو الثلث عن الأصل. فإذا رمّزت صورة حجمها ثلاثة ميغابايت لتضعها داخل صفحة، صارت أربعة ميغابايت تقريباً. لهذا فإن تضمين الصور الكبيرة بهذه الطريقة قرار سيئ غالباً، بينما يبقى مناسباً للأيقونات الصغيرة جداً التي يوفّر تضمينها طلب شبكة كاملاً.

أما علامات المساواة في النهاية فوظيفتها الحشو: لأن الطول يجب أن يكون من مضاعفات الأربعة، تُضاف علامة أو اثنتان لإكماله. وجودها طبيعي تماماً وليس علامة على خلل.

لماذا يخرج النص العربي مشوّهاً؟

هنا المشكلة الأكثر إزعاجاً. Base64 يعمل على بايتات، لا على حروف. والحرف العربي في ترميز UTF-8 لا يُخزَّن في بايت واحد كالحرف الإنجليزي، بل في بايتين. والرمز التعبيري قد يحتاج أربعة.

كثير من الأدوات — والدوال الجاهزة في بعض اللغات — تفترض أن كل حرف بايت واحد. فتأخذ كلمة «مرحبا» وتقتطع نصف كل حرف، والنتيجة إما خطأ صريح وإما — وهو الأسوأ — سلسلة تبدو سليمة لكنها تُرجع علامات استفهام عند فكّها. أداة ترميز Base64 في سهل تحوّل النص إلى بايتات UTF-8 أولاً ثم ترمّزه، فيعود إليك النص العربي والرموز التعبيرية كما أدخلتها بالضبط.

الأبجدية القياسية والأبجدية الآمنة للروابط

الأبجدية القياسية تستخدم الرمزين + و/ ضمن حروفها الأربعة والستين. وكلاهما له معنى خاص داخل الروابط: الشرطة المائلة تفصل المسارات، والزائد يُقرأ في بعض السياقات على أنه مسافة. فإذا وضعت سلسلة Base64 قياسية في رابط، فقد تصل مكسورة.

لذلك توجد نسخة ثانية تستبدل + بشرطة و/ بشرطة سفلية، وغالباً تحذف علامات الحشو. هي الصيغة التي تراها في الرموز المميزة مثل JWT. الأداة تدعم الاثنتين، وتترك لك الاختيار بدل أن تفترض.

خطوات الاستخدام

  1. اختر الاتجاه: ترميز نص إلى Base64، أو فك ترميز سلسلة إلى نص.
  2. اختر الأبجدية: القياسية للاستخدام العام، أو الآمنة للروابط إن كان الناتج سيوضع في رابط.
  3. الصق النص أو السلسلة.
  4. انسخ الناتج. وإن كانت السلسلة غير صالحة، ستظهر رسالة توضّح السبب بدل إخراج نص مشوّه.

سيناريو واقعي

مطوّر يتلقى رسالة خطأ من خدمة خارجية، وداخلها حقل اسمه details قيمته سلسلة Base64 طويلة. يلصقها في الأداة فيجد بداخلها كائن JSON يحمل رسالة الخطأ الحقيقية ورقمها — وهي معلومات كانت موجودة طوال الوقت لكنها مخفية خلف طبقة ترميز واحدة. يلصق الناتج بعد ذلك في أداة تنسيق JSON ليقرأه مرتّباً. وإن كان ما بين يديه رمزاً مميزاً لا مجرد نص، فأداة فك ترميز JWT تعرض محتواه مباشرة دون خطوات يدوية.

أسئلة شائعة

هل Base64 يقلّل حجم الملف؟

لا، بل يزيده بنحو الثلث. من يخلط بينه وبين الضغط يفعل عكس ما يريد تماماً.

كيف أعرف أن سلسلة ما هي Base64؟

المؤشرات: حروف وأرقام فقط بلا مسافات، وطول من مضاعفات الأربعة، وربما علامة يساوي في النهاية. لكن هذه قرائن لا براهين — الطريقة الوحيدة للتأكد هي محاولة فكّها والنظر في الناتج.

هل ترتفع بياناتي إلى خادم؟

لا، العملية كلها تجري داخل متصفحك. وهذا مهم لأن ما يُرمَّز كثيراً ما يكون بيانات اعتماد أو محتوى داخلياً.

لماذا يفشل فك الترميز أحياناً؟

غالباً لأن السلسلة نُسخت ناقصة، أو لأنها بالأبجدية الآمنة للروابط وأنت تفكّها بالقياسية، أو لأن مسافات وأسطراً جديدة تسللت إليها عند النسخ. جرّب الأبجدية الأخرى أولاً.

هل يمكن ترميز ملف كامل؟

نعم من حيث المبدأ، وهذا ما يحدث في مرفقات البريد وروابط البيانات. لكن للملفات الكبيرة تصبح السلسلة ضخمة وثقيلة على المتصفح، والأفضل حينها رفع الملف كما هو بدل تحويله إلى نص.

هل ترميز النص مرتين يجعله أكثر أماناً؟

لا. كل طبقة ترميز إضافية تُفك بالخطوة نفسها التي فُكّت بها الأولى، وتزيد الحجم بنحو الثلث مرة أخرى دون أي فائدة. إن كانت البيانات حساسة فالحل هو التشفير الحقيقي بمفتاح، لا تكرار الترميز. وإن وجدت سلسلة تفكّها فتخرج لك سلسلة Base64 أخرى، فهذا يعني أن أحدهم رمّزها أكثر من مرة، وكل ما عليك أن تكرر فكّها حتى يظهر النص الأصلي.

مقالات ذات صلة