ما ترميز Base64؟ شرح بسيط مع أمثلة
لقد رأيت Base64 حتى لو لم تكن تعرفه: سلاسل طويلة من الحروف والأرقام تنتهي بـ "=" في رسائل البريد والواجهات البرمجية والرموز المميزة وروابط الصور. إليك ما هو، وكيف يعمل، ومتى تستخدمه.
الإجابة السريعة
Base64 طريقة لتمثيل أي بيانات ثنائية (صور، ملفات، بايتات مشفّرة) باستخدام 64 حرفًا نصيًا آمنًا فقط: A–Z وa–z و0–9 و+ و/، مع = للحشو. وهو يتيح للبيانات الثنائية المرور عبر أنظمة لا تدعم إلا النص، مثل JSON وHTML والبريد الإلكتروني. ويزيد حجم البيانات بنحو 33%، وليس تشفيرًا.
لماذا وُجد Base64
تخزّن الحواسيب كل شيء على شكل بايتات، ويمكن أن يأخذ البايت 256 قيمة. لكن كثيرًا من الأنظمة صُممت لنقل النصوص، ولبعض قيم البايتات فيها معانٍ خاصة: حروف التحكم ونهايات الأسطر وعلامات الاقتباس أو حروف تتشوه بين نظام وآخر. وإرسال البيانات الثنائية الخام عبرها قد يُفسدها.
ويحل Base64 هذه المشكلة بترجمة أي بايتات إلى أبجدية صغيرة وآمنة تعبر أي نظام نصي دون أن تتغير.
كيف يعمل ترميز Base64 خطوة بخطوة
لنرمّز الكلمة Man:
- حوّل الحروف إلى بايتات. M = 77، وa = 97، وn = 110.
- اكتبها بالنظام الثنائي (8 بتات لكل منها):
01001101 01100001 01101110. - أعد تجميعها في كتل من 6 بتات:
010011 010110 000101 101110. - حوّل كل كتلة إلى رقم: 19 و22 و5 و46.
- ابحث عن كل رقم في أبجدية Base64 (A=0 … Z=25، a=26 … z=51، 0=52 … 9=61، +=62، /=63): 19 = T، و22 = W، و5 = F، و46 = u.
النتيجة: Man ← TWFu. فكل 3 بايتات تصبح 4 حروف، ولهذا يكون ناتج Base64 أكبر من المدخل بنحو الثلث.
ما علامة "=" في النهاية؟
عندما لا يكون المدخل من مضاعفات 3 بايتات، يُحشى الناتج بعلامة = ليصبح طوله من مضاعفات 4. فـ Ma تصبح TWE=، وM تصبح TQ==.
الاستخدامات الشائعة لـ Base64
- روابط البيانات (Data URLs): تضمين الصور الصغيرة مباشرة في HTML أو CSS:
<img src="data:image/png;base64,iVBORw0KGgo…">. - مرفقات البريد الإلكتروني: يرمّز معيار MIME المرفقات بـ Base64 لتعبر خوادم البريد سليمة.
- الواجهات البرمجية (APIs): إرسال ملفات أو بيانات ثنائية داخل JSON الذي لا يدعم إلا النص.
- مصادقة HTTP Basic: تُرمَّز العبارة
username:passwordبـ Base64 في ترويسة Authorization. - رموز JSON Web Tokens (JWT): الترويسة والحمولة مكتوبتان بـ Base64 الآمن للروابط.
- الشهادات والمفاتيح: ملفات PEM هي Base64 بين سطري "BEGIN" و"END".
Base64 ليس تشفيرًا
يستطيع أي شخص فك ترميز Base64 فورًا. فهو لا يخفي شيئًا. بيانات اعتماد HTTP Basic ومحتوى رموز JWT يمكن لأي شخص يراها أن يقرأها، ولهذا يجب ألا تنتقل إلا عبر HTTPS. لا تستخدم Base64 أبدًا "لحماية" كلمات المرور أو مفاتيح الواجهات البرمجية أو البيانات الشخصية.
Base64 القياسي مقابل الآمن للروابط
يستخدم Base64 القياسي الرمزين + و/، ولهما معانٍ خاصة في الروابط ومسارات الملفات. أما Base64 الآمن للروابط (ويُسمى أيضًا Base64URL) فيستبدلهما:
| القياسي | الآمن للروابط | |
|---|---|---|
| الحرف 62 | + | - |
| الحرف 63 | / | _ |
| الحشو | = | يُحذف عادةً |
| يُستخدم في | البريد الإلكتروني وروابط البيانات وPEM | رموز JWT ومعاملات الروابط وأسماء الملفات |
كيف ترمّز Base64 وتفك ترميزه
- افتح أداة ترميز Base64 وفك ترميزه المجانية.
- في تبويب النص، اكتب أو الصق نصًا لترميزه، أو Base64 لفك ترميزه. تتحدّث النتيجة أثناء الكتابة.
- فعّل وضع الآمن للروابط للرموز المميزة والروابط.
- في تبويب الملف، رمّز صورة أو مستندًا لتحصل على سلسلة Base64 أو رابط بيانات، أو فك ترميز Base64 إلى ملف قابل للتنزيل.
كل شيء يعمل في متصفحك. ويُعالَج النص بترميز UTF-8، لذا تُحفظ الحروف العربية وغيرها من الأبجديات والرموز التعبيرية بشكل صحيح.
جرّبها مجانًا: ترميز وفك ترميز Base64
رمّز النصوص والصور إلى Base64 أو فك ترميزها. تعمل في متصفحك، دون تسجيل.
Base64 في الكود
// JavaScript (browser, ASCII text only)
btoa('Man'); // "TWFu"
atob('TWFu'); // "Man"
# Python
import base64
base64.b64encode(b'Man') # b'TWFu'
base64.b64encode(b'\xfb\xff') # b'+/8='
base64.urlsafe_b64encode(b'\xfb\xff') # b'-_8=' (URL-safe)
# Command line (macOS / Linux)
echo -n 'Man' | base64 # TWFu
ملاحظة: الدالة btoa() في المتصفح لا تقبل إلا الحروف ضمن نطاق Latin-1، لذا ستفشل مع النص العربي. ولترميز نص Unicode كامل، حوّله أولًا إلى بايتات UTF-8، مثلًا باستخدام TextEncoder.
متى لا تستخدم Base64
- الصور الكبيرة في صفحات الويب. تضمينها يثقل HTML أو CSS، ولا يمكن تخزين الصورة مؤقتًا بشكل منفصل. ضمّن الأيقونات الصغيرة فقط، عادةً بضعة كيلوبايتات.
- تخزين الملفات في قواعد البيانات عندما تدعم قاعدة البيانات الأعمدة الثنائية.
- أي شيء يجب أن يبقى سريًا. استخدم تشفيرًا حقيقيًا.
الأسئلة الشائعة
لماذا يزيد Base64 حجم الملفات؟
كل حرف في Base64 يحمل 6 بتات من البيانات، لكنه يشغل 8 بتات. لذا تصبح كل 3 بايتات مُدخلة 4 بايتات في الناتج، بزيادة 33% (وأكثر قليلًا مع فواصل الأسطر).
كيف أعرف إن كانت السلسلة مكتوبة بـ Base64؟
لا تستخدم إلا A–Z وa–z و0–9 و+ / (أو - _)، وطولها غالبًا من مضاعفات 4، وقد تنتهي بـ = أو ==. جرّب فك ترميزها لتتأكد.
لماذا يبدو النص بعد فك الترميز غير مفهوم؟
على الأرجح أن البيانات ملف ثنائي مثل صورة أو PDF، وليست نصًا. فك ترميزها كملف بدلًا من ذلك.
الخلاصة
Base64 طبقة ترجمة تتيح للبيانات الثنائية العبور بأمان عبر النصوص. وهو أساسي لروابط البيانات والبريد الإلكتروني والواجهات البرمجية والرموز المميزة، لكنه يزيد الحجم بنسبة 33% ولا يوفّر أي حماية على الإطلاق.
وجدت معلومة قديمة أو غير واضحة؟ راسل contact@ultratoolsai.com وسنصححها.


