كيف يعمل Base64 ترميز

إذا كان الإنترنت هو الطريق السريع للمعلومات ، فإن مسار البريد الإلكتروني هو واد ضيق. فقط عربات صغيرة جدا يمكن أن تمر.

تم تصميم نظام النقل للبريد الإلكتروني لنص ASCII فقط. إن محاولة إرسال نص بلغات أخرى أو ملفات عشوائية تشبه الحصول على شاحنة عبر الوادي.

كيف تذهب الشاحنة الكبيرة عبر رافين؟

ثم كيف ترسل شاحنة كبيرة عبر واد صغير؟ عليك أن تأخذها إلى قطع في نهاية واحدة ، ونقل القطع من خلال واد ، وإعادة بناء الشاحنة من القطع على الطرف الآخر.

يحدث الشيء نفسه عند إرسال ملف مرفق عبر البريد الإلكتروني . في عملية تعرف باسم ترميز البيانات الثنائية يتم تحويلها إلى نص ASCII ، والتي يمكن نقلها في البريد الإلكتروني دون مشاكل. في نهاية المستلم ، يتم فك ترميز البيانات وإعادة إنشاء الملف الأصلي.

أسلوب واحد من ترميز البيانات إجبارية كنص ASCII عادي Base64. وهو أحد التقنيات المستخدمة من قبل معيار MIME لإرسال البيانات بخلاف النص العادي .

Base64 للانقاذ

يستغرق ترميز Base64 ثلاثة بايت ، يتكون كل منها من ثماني بتات ، ويمثلها كأربعة أحرف قابلة للطباعة في معيار ASCII. يفعل ذلك في خطوتين بشكل أساسي.

الخطوة الأولى هي تحويل ثلاثة بايت إلى أربعة أرقام من ستة بتات. كل حرف في معيار ASCII يتكون من سبعة بتات. يستخدم Base64 فقط 6 وحدات بت (المقابلة لـ 2 ^ 6 = 64 حرفًا) لضمان أن البيانات المشفرة قابلة للطباعة وقابلة للقراءة من الناحية الإنسانية. يتم استخدام أي من الأحرف الخاصة المتوفرة في ASCII.

الأحرف 64 (ومن هنا الاسم Base64) هي 10 أرقام و 26 حرفًا صغيرًا و 26 حرفًا كبيرًا بالإضافة إلى "+" و "/".

إذا كانت البايتات الثلاثة ، على سبيل المثال ، هي 155 و 162 و 233 ، فإن تدفق البتات المقابل (والمخيفة) هو 100110111010001011101001 ، الذي يقابل بدوره القيم 6 بتات 38 و 58 و 11 و 41.

يتم تحويل هذه الأرقام إلى أحرف ASCII في الخطوة الثانية باستخدام جدول الترميز Base64. قيم 6 بت من مثالنا تترجم إلى تسلسل ASCII "m6Lp".

يتم تطبيق هذه العملية المكونة من خطوتين على التسلسل الكامل للبايتات التي تم ترميزها. للتأكد من أن البيانات المشفرة يمكن طباعتها بشكل صحيح ولا تتعدى حد طول خط خادم البريد ، يتم إدراج أحرف السطر الجديد للحفاظ على طول السطر أقل من 76 حرفًا. يتم ترميز الأحرف السطر الجديد مثل كافة البيانات الأخرى.

حل لعبة النهاية

في نهاية عملية الترميز ، قد نواجه مشكلة. إذا كان حجم البيانات الأصلية بالبايت مضاعفات ثلاثة ، فسيكون كل شيء يعمل بشكل جيد. إذا لم يكن الأمر كذلك ، فقد ينتهي بنا الأمر إلى واحد أو اثنين من وحدات البايت 8 بت. للتشفير الصحيح ، نحتاج بالضبط إلى ثلاثة بايت.

الحل هو إلحاق بايت كافية بقيمة "0" لإنشاء مجموعة 3 بايت. يتم إلحاق اثنين من هذه القيم إذا كان لدينا بايت واحد إضافي من البيانات ، يتم إلحاق أحد اثنين بايت إضافية.

بالطبع ، لا يمكن تشفير هذه الإصبع الاصطناعي باستخدام جدول الترميز أدناه. يجب أن يتم تمثيلهم من خلال شخصية رقم 65.

حرف padding Base64 هو '='. بطبيعة الحال ، يمكن أن تظهر فقط في نهاية البيانات المشفرة.

Base64 ترميز الجدول

القيمة فحم القيمة فحم القيمة فحم القيمة فحم
0 ا 16 Q 32 ز 48 ث
1 ب 17 R 33 ح 49 س
2 C 18 S 34 أنا 50 ذ
3 د 19 تي 35 ي 51 ض
4 E 20 U 36 ك 52 0
5 F 21 الخامس 37 ل 53 1
6 G 22 W 38 م 54 2
7 H 23 X 39 ن 55 3
8 أنا 24 Y 40 س 56 4
9 J 25 Z 41 ص 57 5
10 ك 26 ا 42 ف 58 6
11 L 27 ب 43 ص 59 7
12 M 28 ج 44 الصورة 60 8
13 N 29 د 45 تي 61 9
14 O 30 البريد 46 ش 62 +
15 P 31 F 47 الخامس 63 /