🔡
أدوات المطورين
March 15, 20266 min readBy BrowseryTools Team

ما هو Base64؟ دليل شامل للمطورين العرب

فهم Base64 من الداخل: كيف يعمل، أين يُستخدم في JWT والبريد الإلكتروني والصور، والفرق الجوهري بينه وبين التشفير الحقيقي.

base64ترميزمطورينJWTencodingdeveloper

افتح أي تطبيق ويب حديث، أو افحص طلب HTTP، أو ألقِ نظرة على JWT token — ستجد Base64 في كل مكان. إنه أحد أنظمة الترميز الأساسية التي يصادفها المطورون باستمرار، غير أن قليلين منهم يتوقفون ليفهموه فعلًا. هذا الدليل يشرح ما هو Base64، وكيف يعمل على مستوى البايتات، وأين يُستخدم في الأنظمة الحقيقية، ومتى يجب عليك اللجوء إليه ومتى لا.

يمكنك ترميز أي نص أو فك ترميز أي سلسلة Base64 فورًا باستخدام أداة Base64 من BrowseryTools — مجانية تمامًا، بدون تسجيل، ولا شيء يغادر متصفحك.

لماذا وُجد Base64 أصلًا؟

لفهم Base64 عليك أن تفهم المشكلة التي جاء لحلّها. في الأيام الأولى للإنترنت، صُمّمت كثير من بروتوكولات الاتصال — ولا سيما البريد الإلكتروني — حول نص ASCII ذي 7 بتات. ASCII يعرّف 128 حرفًا باستخدام 7 بتات لكل حرف. أما البيانات الثنائية — كالصور والمستندات والملفات التنفيذية — فتستخدم كامل 8 البتات لكل بايت، مما ينتج قيم بايت لا تعبير لها في ASCII، وكانت الأنظمة القديمة تتجاهلها أو تُشوّهها.

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

كيف يعمل Base64 تحنيًا؟

فهم الآلية الداخلية لـBase64 يجعل سلوكه منطقيًا تمامًا. العملية مباشرة:

الخطوة 1: خذ البيانات الثنائية

كل بايت هو رقم من 0 إلى 255 يُمثَّل بـ8 بتات. خذ مثلًا الكلمة الإنجليزية Man:

  • M = 77 = 01001101
  • a = 97 = 01100001
  • n = 110 = 01101110

الخطوة 2: دمج البتات وتقسيمها إلى مجموعات من 6

يتم دمج بتات الثلاثة بايتات معًا: 010011010110000101101110 — ثم تُقسَّم إلى مجموعات من 6 بتات: 010011 | 010110 | 000101 | 101110. هذا يعطينا الأرقام 19 و22 و5 و46.

الخطوة 3: تحويل كل رقم إلى حرف Base64

يستخدم Base64 جدول أحرف مكوّنًا من: A-Z (0-25)، ثم a-z (26-51)، ثم 0-9 (52-61)، ثم + و/ (62-63). الأرقام 19 و22 و5 و46 تقابل الأحرف T وWوF وu. إذن Man يُرمَّز إلى TWFu.

لماذا كل 3 بايتات تصبح 4 أحرف؟

3 بايتات = 24 بت. 24 بت مقسّمة على 6 بت = 4 رموز Base64. هذا يعني أن Base64 يزيد حجم البيانات بنسبة 33٪ تقريبًا — هذا ثمن التوافقية مع البروتوكولات النصية.

ملاحظة عن رمز التعبئة: إذا لم تكن البيانات مضاعفًا لثلاثة بايتات، يُضاف رمز التعبئة= أو == في النهاية لإتمام المجموعة الأخيرة. هذا يفسر لماذا كثير من سلاسل Base64 تنتهي بـ=.

أين يُستخدم Base64 في الواقع؟

Base64 موجود في كل مكان في تطوير البرمجيات الحديثة. إليك أبرز استخداماته:

الصور المضمّنة في HTML وCSS

بدلًا من تحميل صورة كملف منفصل، يمكنك تضمينها مباشرةً في الكود باستخدام data URI:

<img src="data:image/png;base64,iVBORw0KGgoAAAANS..." />

هذا مفيد للصور الصغيرة كالأيقونات، حيث يقلل عدد طلبات HTTP — لكنه يزيد حجم الصفحة بنسبة 33٪.

رموز JWT (JSON Web Tokens)

يتكوّن JWT من ثلاثة أجزاء مفصولة بنقاط، كلها مُرمَّزة بـBase64url (نسخة معدّلة تستبدل +بـ- و/ بـ_ لتكون آمنة في URLs). الجزء الثاني يحمل البيانات الفعلية مثل معرّف المستخدم وصلاحياته وتاريخ انتهاء الجلسة. يمكنك فك ترميزه وقراءته بدون أي مفتاح تشفير.

مرفقات البريد الإلكتروني (MIME)

هذا هو السبب الأصلي لوجود Base64. كل مرفق ترسله بالبريد الإلكتروني — صورة أو ملف PDF أو مستند — يُرمَّز بـBase64 قبل الإرسال ويُفك ترميزه من قِبل عميل البريد لديك عند الاستقبال.

ترميز بيانات المصادقة

المصادقة الأساسية HTTP (Basic Auth) ترسل بيانات الاعتماد بالشكل:Authorization: Basic dXNlcjpwYXNz. إذا فككت ترميز هذه القيمة ستجد user:passمفصولين بنقطتين. Base64 هنا ليس للأمان — فقط للتحويل إلى نص صالح لبروتوكول HTTP.

شهادات SSL/TLS والمفاتيح العامة

ملفات الشهادات بصيغة PEM التي تراها في خوادم الويب هي بيانات ثنائية مُرمَّزة بـBase64 بين سطرين:-----BEGIN CERTIFICATE----- و-----END CERTIFICATE-----.

Base64 ليس تشفيرًا — فرق جوهري

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

التشفير الحقيقي — كـAES-256 أو RSA — يستخدم مفتاحًا رياضيًا سريًا لتحويل البيانات إلى صيغة لا يمكن فهمها دون امتلاك المفتاح. Base64 لا يفعل شيئًا من هذا.

تحذير: لا تستخدم Base64 لإخفاء معلومات حساسة. إذا رأيت كلمات مرور أو مفاتيح API مُرمَّزة بـBase64 في كودك، اعلم أنها مكشوفة لأي شخص يطّلع على الكود. استخدم التشفير الحقيقي أو متغيرات البيئة بدلًا من ذلك.

أمثلة عملية بالكود

ترميز وفك ترميز Base64 في بيئات مختلفة:

JavaScript (المتصفح والـNode.js)

في المتصفح تستخدم الدوال المدمجة btoa() للترميز وatob() لفك الترميز:

  • btoa("مرحبا") — ترميز نص إلى Base64
  • atob("bWFu") — فك ترميز Base64 إلى نص

للنصوص العربية وغير ASCII، تحتاج إلى تحويل إضافي عبر encodeURIComponent أولًا لأنbtoa() تدعم فقط أحرف Latin-1.

Python

  • import base64; base64.b64encode(b"hello") — ترميز
  • base64.b64decode("aGVsbG8=") — فك ترميز

سطر الأوامر (Linux/Mac)

  • echo -n "hello" | base64 — ترميز
  • echo "aGVsbG8=" | base64 -d — فك ترميز

متى تستخدم Base64 ومتى لا تستخدمه؟

  • استخدمه حين تحتاج لتضمين بيانات ثنائية في سياق نصي (HTML، JSON، XML، رؤوس HTTP)
  • استخدمه لتمرير بيانات ثنائية عبر APIs تقبل النصوص فقط
  • لا تستخدمه كبديل عن التشفير لحماية البيانات الحساسة
  • لا تستخدمه لنقل ملفات كبيرة — الزيادة في الحجم بنسبة 33٪ تؤثر على الأداء
  • لا تستخدمه لتمرير كلمات مرور أو أسرار في الكود المصدري

في المرة القادمة التي تصادف فيها سلسلة نصية غريبة تبدو عشوائية في JWT أو طلب HTTP، جرّب فك ترميزها بـأداة Base64 — ستتفاجأ كم من المعلومات المخفية تظهر فجأة.


🛠️

Try the Tools — 100% Free, No Sign-Up

Everything runs in your browser. No uploads. No accounts. No ads.

Explore All Tools →