أدوات المطور · التشفير ووحدة فك التشفير Base64
لماذا تعتبر مرفقات البريد الإلكتروني Base64: MIME، 7 نقل بت و76 أسطر عمود
· خلفية
base64 ترميز
تم إنشاء البريد الإلكتروني لنص 7 بت ASCII، وكان يجب أن تتلاءم المرفقات معه. يتتبع هذا المنشور كيفية اعتماد MIME لـ Base64، ولماذا يتم تغليف الأسطر بأحرف 76 وما يعنيه ذلك بالنسبة للحجم وتصحيح الأخطاء.
المرفق الذي وصل تالفًا من خلال مرحل قديم — مشكلة 8 بت التي تم اختراع MIME لحلها
تم تصميم البريد الإلكتروني في السبعينيات والثمانينيات من القرن العشرين للنص 7 بت ASCII فقط. SMTP، البروتوكول الذي يحمل البريد الإلكتروني، يتوقع أن يكون كل سطر على الأكثر 998 حرفًا من 7-بت ASCII (الأحرف 0-127). قد يفشل إرسال ملف ثنائي مثل PDF أو صورة مباشرة من خلال SMTP: قد تتلف وحدات البايت 128-255 أو ترفضها خوادم البريد والمرحلات القديمة. المرفقات تحتاج إلى تشفير MIME (امتدادات بريد الإنترنت متعددة الأغراض، RFC 2045) حلت هذه المشكلة عن طريق تحديد قيم رأس ترميز نقل المحتوى، بما في ذلك base64، الذي يمثل أي تسلسل بايت كنص 7 بت ASCII.
يقدم MIME العديد من خيارات ترميز نقل المحتوى: 7bit (بدون تشفير، فقط من أجل ASCII الآمن)، 8bit (للخوادم التي تدعم 8 بايت بايت، ليست عالمية)، قابلة للطباعة بين علامات الاقتباس (ترميز البايتات غير الآمنة فقط، مع الاحتفاظ بـ ASCII) قابل للقراءة)، وbase64 (يشفر كل شيء، ويزيد من التوافق). تم اختيار Base64 للمرفقات الثنائية لأنه بسيط وموحد ويضمن الأمان في أي نظام بريد، بغض النظر عن عمره أو 7 بت فقط. المقايضة هي الحجم: Base64 أكبر بحوالي الثلث من البايتات الأصلية.
مشكلة النقل التي يحلها Base64 — تمثل بايتات عشوائية بأحرف قابلة للطباعة
يصبح 3 KB PDF تقريبًا 4 KB من نص Base64. يأتي حد السطر 76 من الأحرف من RFC 2045.
SMTP يسمح بأسطر تصل إلى 998 من الأحرف، ولكن أنظمة البريد القديمة وبعض عوامل تصفية البريد العشوائي ترفض الأسطر الطويلة. RFC 2045 يحدد أن MIME أسطر Base64 يجب ألا تتجاوز 76 حرفًا (بالإضافة إلى نهاية السطر CRLF)، لذلك لن يقوم خادم البريد بقطع النقل أبدًا. الحد ليس سحريا. إنه حل وسط تاريخي بين سهولة القراءة (76 أحرف تناسب معظم المحطات الطرفية في الثمانينيات)، والتوافق مع الأنظمة القديمة، وتجنب اكتشاف أنماط البريد العشوائي أو الفيروسات.
خيارات الإخراج المرئية في هذه الأداة — الحشو الأساسي والتفاف الأحرف الاختياري 76
تدعم أنظمة البريد الحديثة عادةً الأسطر الطويلة، ولكن التشفير إلى 76 يضمن وصول المرفق حتى إلى أقدم مستلم. بعد أن قام RFC 2045 بتحديد MIME Base64، أضاف RFC 4288 (أنواع الوسائط) وRFC 2183 (الترتيب للمحتوى) طرقًا موحدة لتسمية المرفقات. تشتمل الرسالة التي تحتوي على مرفق PDF على رأس ترميز نقل المحتوى: base64 ونوع المحتوى: application/pdf رأس وPDF بايت مشفرة كـ Base64 مع 76 أسطر أحرف. يقوم قارئ البريد بفك تشفير الأسطر عن طريق إزالة فواصل الأسطر (CRLF أحرف) ثم فك تشفير Base64 لاستعادة البايتات الأصلية.
يتطلب فك تشفير مرفق MIME Base64 تجاهل المسافة البيضاء. يقول RFC: يجب على أجهزة فك التشفير تخطي فواصل الأسطر (أحرف CR وLF) أثناء فك التشفير. هذا هو السبب في أن وحدة فك ترميز Base64 التي تقبل المسافات البيضاء تعتبر عملية؛ معظم رسائل البريد MIME الحقيقية ستحتوي على فواصل أسطر. بعض وحدات فك التشفير صارمة وترفض المسافات البيضاء (مناسبة لسياقات مثل JWT، حيث لا ينبغي أن تكون فواصل الأسطر موجودة)، في حين أن البعض الآخر متساهل ويتخطى المسافات البيضاء (مناسب لـ MIME).
خيار 76 المكون من أحرف عمليًا - كيفية إدراج أداة التشفير وتجاهل وحدة فك التشفير لفواصل الأسطر
يمكن لأداة التشفير وفك التشفير Base64 التعامل مع كليهما: فهي تقبل مرفقًا تم لصقه متعدد الأسطر وتتجاهل فواصل الأسطر أثناء فك التشفير. تأثير الحجم يمكن التنبؤ به. يضيف تغليف RFC 2045 base64 واحدًا CRLF (2 bytes) لكل 76 حرفًا من الإخراج. بالنسبة للملف 10 KB، يكون Base64 تقريبًا 13.3 KB، بالإضافة إلى CRLF كل 76 حرفًا: حوالي 13.5 KB إجماليًا. الحمل هو ما يقرب من ثلث البايتات.
عادةً ما يتم ذكر حدود حجم البريد الإلكتروني بالنسبة للحجم المشفر، وليس حجم الملف الأصلي؛ خادم البريد بحد 25 MB يعني 25 MB من الرسالة المشفرة، وليس 25 MB من المرفقات. يتطلب حساب حجم الملف الأصلي القسمة على 1.33 (أو بشكل أكثر دقة، على 4 مقسومًا على 3). يعد الترميز القابل للطباعة المقتبس بديلاً يحافظ على ASCII القابل للطباعة دون تغيير ويقوم بتشفير البايتات فقط 128-255 وبعض الأحرف الخاصة.
مثال عملي: قراءة مصدر رسالة أولية - العثور على الجزء Base64 وفك تشفير مرفق نصي صغير
يظل الملف النصي الذي يحتوي في الغالب على ASCII قابلاً للقراءة إذا قمت بفتح مصدر الرسالة الأولية. يقوم Base64 بتشويش كل شيء، حتى النص العادي ASCII. نادرًا ما يتم استخدام الطباعة المقتبسة للملفات الثنائية (سيكون ذلك غير فعال للغاية بالنسبة لـ PDF) ولكنه يستخدم أحيانًا للنص. يختار قارئ البريد الترميز بناءً على نوع المرفق؛ لا يسأل المتصفح عادةً المستخدم عن الترميز الذي سيتم تطبيقه.
إن نص Base64 لرسالة البريد الإلكتروني هو مجرد وحدات البايت نفسها، وليس ملفًا منفصلاً. عندما ترى مرفقًا في قارئ البريد، فهذا يعني أن القارئ قد قام بالفعل بفك تشفير Base64 ويعرض الملف الأصلي.
تكلفة الحجم عمليًا - ما يقرب من ثلث البايتات الإضافية، وسبب ذكر حدود حجم البريد للحجم المشفر
إذا قمت بعرض مصدر الرسالة الأولية (خيار في معظم عملاء البريد)، فسوف ترى الرؤوس MIME والنص الأساسي المشفر باستخدام Base64. يمكن أن تساعدك أداة التشفير وفك التشفير Base64 على فك تشفير جزء من مصدر الرسالة يدويًا؛ انسخ الجزء Base64 وأزل فواصل الأسطر وألصقه في الأداة.
تستخدم المرفقات المتعددة في رسالة MIME حدًا متعدد الأجزاء. كل جزء له رؤوس خاصة به (نوع المحتوى، نقل المحتوى، التشفير) والنص. تظهر نسخة بديلة بنص عادي من الرسالة كجزء واحد، ويظهر كل مرفق كجزء آخر. السلسلة الحدودية تفصل بين الأجزاء؛ تم اختيار عدم الظهور في محتوى أي جزء. يقوم قارئ البريد بإعادة بناء الرسالة عن طريق تحليل الحدود وفك تشفير كل جزء وفقًا لرأس ترميز المحتوى ونقله.
ما لا يغطيه هذا — رؤوس الكلمات المشفرة، S/MIME وامتداد 8BITMIME بعمق
RFC 2045 ترميز base64 ليس عالميًا اليوم. تدعم بعض أنظمة البريد النقل 8 بت ولم تعد تتطلب base64. تستخدم بعض الأنظمة أسماء ترميز مختلفة أو تضيف رؤوسًا مخصصة. ولكن يظل base64 الذي يحتوي على 76 هو الخيار الأكثر توافقًا للمرفقات التي يجب أن تصل إلى أي نظام بريد في أي مكان. عند إرفاق ملف باستخدام عميل بريد، يختار العميل عادةً base64 تلقائيًا للملفات الثنائية، ويتعامل مع التفاف السطر، ويضيف الرؤوس MIME.
يساعدك فهم الآلية على تصحيح الأخطاء عندما يبدو المرفق تالفًا أو عندما تعمل يدويًا مع مصدر رسالة. يتطلب إنشاء رسالة بريد إلكتروني صادرة أو تحليلها فهم بنية MIME. يجب أن تتعامل المكتبة مع الترميز، والتفاف الأسطر، والرؤوس؛ لا تقوم عادةً بإنشاء MIME يدويًا. ولكن إذا كنت تقوم بتحليل مصدر رسالة أولية (تصحيح مشكلة التسليم، أو استخراج المرفقات برمجيًا)، فإن معرفة أن ترميز نقل المحتوى: base64 يعني أن النص التالي هو 76-base64 المغلف بالأحرف يتيح لك تطبيق وحدة فك الترميز الصحيحة.
الوجبات الجاهزة: Base64 هي طبقة توافق البريد الإلكتروني - كيف يتيح لك برنامج التشفير ووحدة فك التشفير Base64 قراءة جزء نصي صغير من رسالة أولية محليًا
Base64 نفسه قياسي RFC 4648؛ الغلاف ورؤوس MIME خاصة بالبريد الإلكتروني. مرفقات البريد الإلكتروني هي base64 لأن البريد الإلكتروني مصمم للنص العادي وbase64 هو أبسط طبقة توافق عالمية لإرسال البيانات الثنائية من خلال بروتوكول نصي فقط. يعد حد سطر الأحرف 76 قطعة أثرية تاريخية للمحطات الطرفية والشبكات البطيئة في الثمانينيات، ولكنه لا يزال مستمرًا كمعيار للتوافق.
يشرح فهم هذا السجل سبب وجود MIME، وسبب وجود خيارات تشفير متعددة، ولماذا يظل base64 هو الإعداد الافتراضي للمرفقات على الرغم من أن أنظمة البريد الحديثة يمكنها دعم الثنائي مباشرة. يتيح لك برنامج التشفير ووحدة فك التشفير Base64 العمل يدويًا مع أجسام MIME للتحقق من التشفير أو تصحيحه.