الشرح
كيف يعمل مرمّز Base64
Base64 طريقة ترميز (مُعرَّفة في RFC 4648) تحوّل تسلسلات البايتات إلى سلسلة من 64 حرفًا قابلًا للطباعة من ASCII (A-Z، a-z، 0-9، +، /). يرمّز كل 3 بايتات (24 بت) إلى 4 أحرف (6 بت لكل حرف) ويستخدم = كحشو في النهاية.
التطبيقات النموذجية هي مرفقات البريد (MIME، RFC 2045)، وروابط البيانات للصور (data:image/png;base64,...)، ورموز JWT، وشهادات PEM، وHTTP Basic Authentication، وواجهات JSON، وملفات الإعداد. تعالج هذه الأداة نص UTF-8 فقط، لا الملفات أو البيانات الثنائية العشوائية. يحتاج الإخراج إلى أربعة أحرف لكل مجموعة مبدوءة من ثلاثة بايتات إدخال؛ ويؤثر الحشو في المدخلات القصيرة.
مهم: Base64 ليس تشفيرًا. يمكن لأي شخص عكس الترميز بلا مفتاح. البيانات المرمَّزة بـ Base64 قابلة للقراءة تمامًا كالنص الأصلي — لكن معروضة بصيغة مختلفة.
الأخطاء الشائعة
- الخلط بين Base64 والتشفير: لا يوفّر Base64 أي أمان. يمكن لأي شخص فك النص المرمَّز بلا مفتاح. للخصوصية استخدم تشفيرًا حقيقيًا (AES، ChaCha20).
- نسيان الأحرف غير الآمنة للروابط: يحتوي Base64 القياسي على + و/ اللذين لهما معنى خاص في الروابط. لسياقات الروابط استخدم Base64URL (بـ - و_) أو ترميز URL.
- الخلط بين أحرف النص والبايتات: قد تشغل أحرف Unicode عدة بايتات UTF-8؛ لذلك لا يمكن اشتقاق طول الإخراج من عدد أحرف JavaScript.
- „إخفاء“ البيانات الحساسة في Base64: ترميز كلمات المرور أو مفاتيح API أو البيانات الشخصية بـ Base64 لا يوفّر حماية. في السجلّات أو الروابط أو الإعدادات تكون قابلة للقراءة بسهولة.
حدود هذه الأداة
- لا خصوصية — Base64 قابل للقراءة وليس مشفَّرًا.
- أربعة أحرف إخراج لكل مجموعة مبدوءة من ثلاثة بايتات إدخال؛ ويؤثر الحشو في المدخلات القصيرة.
- إدخال/إخراج نصي فقط — لا ترميز ملفات (صور، PDF إلخ).
- لا وضع Base64URL (RFC 4648 §5) — فقط Base64 قياسي بـ + و/.
- يفشل فك ترميز البيانات الثنائية (غير UTF-8)، لأن الإخراج النصي فقط مدعوم.
المصادر
- RFC 4648: The Base16, Base32, and Base64 Data Encodings. IETF، 2006. يُعرّف Base64 القياسي وBase64URL.
- RFC 2045: MIME Part One — Format of Internet Message Bodies. يُعرّف Base64 لمرفقات البريد (Content-Transfer-Encoding).
- WHATWG HTML Standard: تعريف btoa() وatob() لتحويلات Base64 في المتصفح.
- WHATWG Encoding Standard: تعريف TextEncoder وUTF-8 وفك ترميز TextDecoder القاتل (fatal).