[دليل] 8 دقائق للقراءة

[دليل] مرجع Base64 الشامل

كل ما تحتاج لمعرفته حول ترميز Base64: النظرية والتنفيذ وأفضل الممارسات.

يناير 2025 | fundamentals

// ما هو BASE64؟

Base64 هو مخطط ترميز من الثنائي إلى النص يمثل البيانات الثنائية باستخدام 64 حرفاً من ASCII. وهو مصمم لترميز البيانات الثنائية التي تحتاج إلى تخزين ونقل عبر وسائط مصممة للبيانات النصية.

مجموعة أحرف Base64 تتضمن A-Z، a-z، 0-9، وحرفين إضافيين (عادة + و /)، بالإضافة إلى = للحشو.

// كيف يعمل BASE64

يعمل ترميز Base64 عن طريق أخذ البيانات الثنائية وتحويلها إلى سلسلة من أحرف ASCII. العملية تشمل:

1. تقسيم المدخل إلى قطع من 6 بت (Base64 يستخدم 6 بت لكل حرف) 2. ربط كل قيمة 6 بت بحرف في أبجدية Base64 3. إضافة حشو بأحرف '=' إذا لزم الأمر

// مثال: ترميز 'Man' إلى Base64
// 'M' = 01001101, 'a' = 01100001, 'n' = 01101110
// مجمعة: 010011010110000101101110
// مقسمة إلى مجموعات 6 بت: 010011 010110 000101 101110
// القيم العشرية: 19, 22, 5, 46
// أحرف Base64: T, W, F, u
// النتيجة: 'TWFu'

// الاستخدامات الشائعة

  • > تضمين الصور في HTML/CSS (data URIs)
  • > ترميز البيانات الثنائية لـ JSON APIs
  • > مرفقات البريد الإلكتروني (ترميز MIME)
  • > تخزين البيانات الثنائية في قواعد البيانات
  • > رموز المصادقة ومفاتيح API
  • > نقل البيانات الآمن للـ URL

// تنفيذ JAVASCRIPT

المتصفحات الحديثة توفر وظائف ترميز وفك ترميز Base64 مدمجة:

لترميز النص إلى Base64، استخدم btoa() (binary to ASCII). لفك ترميز Base64 إلى نص، استخدم atob() (ASCII to binary).

// ترميز النص إلى Base64
const text = 'Hello, World!';
const encoded = btoa(text);
console.log(encoded); // SGVsbG8sIFdvcmxkIQ==

// فك ترميز Base64 إلى نص
const decoded = atob(encoded);
console.log(decoded); // Hello, World!

// لسلاسل Unicode، استخدم TextEncoder/TextDecoder
const encoder = new TextEncoder();
const decoder = new TextDecoder();

const unicodeText = 'Hello, 世界!';
const bytes = encoder.encode(unicodeText);
const base64 = btoa(String.fromCharCode(...bytes));
console.log(base64);

// اعتبارات الأمان

Base64 ليس تشفيراً أو أماناً. إنه مجرد ترميز لتمثيل البيانات. ملاحظات أمان مهمة:

لا تستخدم Base64 وحده لحماية البيانات الحساسة. تحقق دائماً من مدخل Base64 لمنع هجمات الحقن. كن على علم أن Base64 يزيد حجم البيانات بـ ~33%.

  • > Base64 قابل للعكس بسهولة - لا يوفر أماناً
  • > تحقق من وأنظف مدخل Base64 دائماً
  • > استخدم التشفير المناسب للبيانات الحساسة
  • > فكر في متغيرات Base64 الآمنة للـ URL لتطبيقات الويب
  • > كن واعياً لهجمات padding oracle في بعض السياقات

// أفضل الممارسات

  • > استخدم Base64 الآمن للـ URL لتطبيقات الويب (استبدل + بـ -، / بـ _)
  • > تعامل مع الحشو بشكل صحيح دائماً
  • > تحقق من طول المدخل والأحرف
  • > فكر في الضغط قبل الترميز للبيانات الكبيرة
  • > استخدم التدفق لمجموعات البيانات الكبيرة جداً
  • > نفذ معالجة الأخطاء المناسبة للمدخل غير الصالح