Skip to main content

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

شرح عمل سكربت base64 encode and decode (أبريل 2025)

شرح عمل سكربت base64 encode and decode (أبريل 2025)
Anonim

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

تم تصميم نظام النقل للبريد الإلكتروني لنص 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".

  • 155 -> 10011011
  • 162 -> 10100010
  • 233 -> 11101001
  • 100110 -> 38
  • 111010 -> 58
  • 001011 -> 11
  • 101001 -> 41
  • 38 -> م
  • 58 -> 6
  • 11 -> L
  • 41 -> ص

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

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

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

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

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

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

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

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