ترميز وفك ترميز Base64
**URL:** `/base64-encode-decode/` **Schema:** `WebApplication` + `FAQPage` + `BreadcrumbList`
تتم جميع العمليات الحسابية في المتصفح. لا يُرسل أي مما تدخله إلى خادم.
تتحدث النتائج أثناء الكتابة. Ctrl/Cmd+Enter ينسخ النتيجة الرئيسية.
النتيجة
—
عرض البتات
إظهار الحل
يقوم ترميز وفك Base64 بتحويل البايتات العشوائية إلى سلسلة ASCII باستخدام أبجدية RFC 4648، وعكس تلك السلسلة مرة أخرى إلى البايتات الأصلية. يقبل وضع النص ترميز الأحرف مثل UTF-8؛ يقرأ وضع الملف التحميل من خلال FileReader بالمتصفح ويمكنه إصدار "بيانات:" URI للتضمين. التشفير ليس تشفيرًا. يمكن لأي شخص يتلقى السلسلة فك تشفيرها.
يتم تشغيل جميع عمليات التشفير وفك التشفير في متصفحك. لا يتم إرسال أي شيء تلصقه إلى الخادم.
تشفير النص أو الملف إلى Base64
يأخذ التشفير بايتات أولية ويكتب سلسلة من A إلى Z، ومن a إلى z، ومن 0 إلى 9، بالإضافة إلى الشرطة المائلة والحشوة =. الصق نصًا أو اختر ملفًا، وحدد ترميز الأحرف عندما يكون المصدر نصًا، واقرأ الإخراج.
يناسب وضع الملف الصور والمستندات الصغيرة التي يجب أن تنتقل داخل JSON أو XML أو البريد الإلكتروني بدون قناة ثنائية.
يعتبر الإخراج آمنًا للنقل عبر الأنظمة التي تفسد الثنائيات العشوائية، مثل بوابات البريد القديمة أو النسخ واللصق في XML. وهو أطول من الإدخال حسب التصميم. الإدخال الفارغ غير الصالح لا ينتج عنه أي سلسلة؛ تنتظر الأداة البايتات قبل إرسال الأحرف.
فك تشفير سلسلة Base64 مرة أخرى إلى البيانات
يؤدي فك التشفير إلى عكس البحث عن الحروف الأبجدية، وإعادة بناء تدفق البتات الأصلي وإرجاع نص أو ملف قابل للتنزيل. تعتبر الحشوة = في النهاية مهمة: فهي تشير إلى عدد البايتات الموجودة في المجموعة النهائية غير المكتملة. تتسبب الأحرف خارج الأبجدية في حدوث خطأ واضح بدلاً من فك التشفير الجزئي الصامت.
غالبًا ما يتم تجاهل المسافات البيضاء، لذا فإن السلاسل المنسوخة من شهادات PEM أو أجسام MIME لا تزال تعمل. تحتاج السلسلة التي تشبه Base64 ولكنها تستخدم الأبجدية الآمنة لعنوان URL إلى وضع فك التشفير الآمن لعنوان URL، وإلا سيتم رفض الواصلة والشرطة السفلية باعتبارها غير قانونية في الأبجدية القياسية.
فهم كيفية عمل ترميز Base64
يقوم Base64 بمعالجة الإدخال في كتل مكونة من ثلاث بايت (24 بت). يتم تقسيم تلك البتات الـ 24 إلى أربع مجموعات مكونة من 6 بتات. كل قيمة 6 بت هي فهرس من 0 إلى 63 في الأبجدية المكونة من 64 حرفًا. وبذلك تصبح ثلاث بايتات إدخال أربعة أحرف إخراج.
Bytes: [ byte1 ][ byte2 ][ byte3 ]
Bits: aaaaaaaa bbbbbbbb cccccccc
Groups: aaaaaa aabbbb bbbbcc cccccc
Chars: Char1 Char2 Char3 Char4
عندما يتبقى أقل من ثلاث بايتات، يستمر برنامج التشفير في إرسال أربعة أحرف ولكنه يضيف مساحة حشو حتى يعرف جهاز فك التشفير الطول الأصلي. إعادة تجميع البتات هي الخوارزمية بأكملها؛ لا يوجد المجموع الاختباري ولا مفتاح.
تشفير كلمة كلب خطوة بخطوة
تتكون الكلمة "Dog" من ثلاث بايتات ASCII، لذا فهي تملأ مجموعة Base64 واحدة ويتم ترميزها بدون أحرف حشو. إخراج المباراة هو "RG9n". إن نقل البايتات إلى وحدات البت، وإعادة التجميع في فهارس ذات 6 بتات، وقراءة أبجدية RFC 4648 يوضح سبب ظهور هذه الأحرف الأربعة وكيف تتبع أي كتلة مكونة من ثلاثة بايت نفس المسار.
1. اكتب البايتات. D = 0x44 = 01000100 o = 0x6F = 01101111 g = 0x67 = 01100111
2. قم بتسلسل 24 بت. 01000100 01101111 01100111
3. انقسم إلى مجموعات مكونة من 6 بتات. 010001 000110 111101 100111
4. تحويل كل مجموعة إلى فهرس عشري. 17, 6, 61, 39
5. ابحث عن الحروف الأبجدية. الفهرس 17 = R، 6 = G، 61 = 9، 39 = n
النتيجة: RG9n. يؤدي فك التشفير RG9n إلى إرجاع البايتات الثلاثة الأصلية والنص Dog ضمن UTF-8 أو ASCII.
فهم الحشو مع علامة يساوي
تظهر المساحة المتروكة عندما لا يكون عدد البايتات من مضاعفات الثلاثة. البايت الواحد المتبقي ينتج حرفين أبجديين وعلامتين =. البايتتان المتبقيتان تنتجان ثلاثة أحرف وواحد =. تُظهر التركيبات Do → RG8= وDogs → RG9ncw== كلتا الحالتين المتبقيتين بجانب الكلمة غير المبطنة المكونة من ثلاثة بايت Dog.
| Input | Bytes | Encoded | Padding |
|---|---|---|---|
| Dog | 3 | RG9n | none |
| Do | 2 | RG8= | one = |
| Dogs | 4 | RG9ncw== | two = |
Do هو بايتان: 01000100 01101111. بعد التجميع المكون من 6 بتات، لا يوجد سوى بتات كافية لثلاثة أحرف ذات معنى (RG8)، وحشوة واحدة = تملأ الفتحة الرابعة. يبلغ حجم Dogs أربعة بايت: مجموعة كاملة مكونة من ثلاثة بايت يتم ترميزها كـ RG9n، ثم يتم ترميز البايت المتبقي كـ cw==. تؤدي إزالة الحشو يدويًا دون ضبط طول البت إلى كسر فك التشفير؛ اترك الأحرف = في مكانها عند اللصق.
قراءة الأبجدية Base64
يحدد RFC 4648 64 حرفًا بالإضافة إلى علامة الحشو =. الفهارس من 0 إلى 25 هي A إلى Z، ومن 26 إلى 51 هي a إلى z، ومن 52 إلى 61 هي 0 إلى 9، والفهرس 62 هو +، والفهرس 63 هو /.
الفهرس 0 هو A، وليس 0، وهو ما يعرقل أي شخص يتوقع أن تتصدر الأرقام الأبجدية.
| Index range | Characters |
|---|---|
| 0 to 25 | A to Z |
| 26 to 51 | a to z |
| 52 to 61 | 0 to 9 |
| 62 | + |
| 63 | / |
| padding | = |
تسرد لوحة الحروف الأبجدية الخاصة بالآلة الحاسبة نفس الجدول الذي يستخدمه برنامج التشفير، بحيث يمكن التحقق من الحرف المشبوه مقابل المجموعة القياسية. السلسلة الكاملة هي ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/.
استخدم متغير Base64 الآمن لعنوان URL
تستبدل الأبجدية الآمنة لعنوان URL (base64url) + بـ - و/ بـ _. قد يتم حذف الحشو في بعض البروتوكولات. تستخدم JSON Web Tokens هذا المتغير حتى تتمكن مقاطع الرمز المميز من الجلوس في عناوين URL ورؤوس HTTP دون ترميز النسبة المئوية لأحرف الزائد والشرطة المائلة.
السلاسل القياسية والآمنة لعنوان URL غير قابلة للتبديل. فشل فك تشفير حمولة JWT بالأبجدية القياسية عند الواصلات. توفر الأداة وضعًا صريحًا وآمنًا لعنوان URL لكل من التشفير وفك التشفير. يمثل ترميز النسبة المئوية لعنوان URL مشكلة مختلفة؛ استخدم صفحة تشفير وفك تشفير URL عندما يكون الهدف هو الهروب RFC 3986 بدلاً من Base64.
حساب لزيادة الحجم
كل ثلاث بايتات تصبح أربعة أحرف، لذا فإن الطول المشفر يبلغ حوالي 4/3 من المدخلات، أي بزيادة قدرها 33 بالمائة قبل فواصل الأسطر. يمكن أن تضيف المساحة المتروكة حرفًا أو حرفين إضافيين إلى المجموعة النهائية. تشعر عناوين URI للبيانات ومرفقات البريد الإلكتروني بهذه التكلفة بسرعة: تصبح الصورة بحجم 300 كيلو بايت 400 كيلو بايت تقريبًا من النص.
encoded_length ≈ 4 × ceil(byte_length / 3)
يضيف التفاف السطر الذي يبلغ 76 حرفًا، وهو أمر شائع في MIME، وحدات بايت للسطر الجديد في الأعلى. تفضل المرفقات الثنائية أو التنسيقات المضغوطة عندما يكون الحجم مهمًا؛ استخدم Base64 عندما لا تستطيع القناة حقًا حمل وحدات البايت الأولية.
اختر ترميز الأحرف
يقوم Base64 بتشفير البايتات، وليس الأحرف المجردة. تنتج نفس الأحرف بايتات مختلفة ضمن UTF-8 أو UTF-16 أو Shift JIS أو Big5. يؤدي فك التشفير ثم الترجمة باستخدام مجموعة أحرف خاطئة إلى إنتاج mojibake حتى عندما كانت طبقة Base64 مثالية، لذلك يجب أن تتطابق مجموعة أحرف وضع النص مع المنتج عند التشفير والمستهلك عند فك التشفير.
| Charset | Typical use |
|---|---|
| UTF-8 | Default for modern text and APIs |
| Windows-1252 | Legacy Western European text |
| UTF-16 LE / BE | Some Windows and Java payloads |
| Shift JIS | Older Japanese text |
| Big5 | Older Traditional Chinese text |
بالنسبة للكلمة "Dog"، فإن ASCII وUTF-8 ينتجان نفس البايتات الثلاث، لذا فإن "RG9n" متطابق. يتباعد النص غير ASCII. اختر مجموعة الأحرف التي تطابق المنتج قبل التشفير، ونفس مجموعة الأحرف بعد فك التشفير، وإلا ستبدو الرحلة ذهابًا وإيابًا وكأنها خطأ Base64 عندما يكون الخطأ في المنبع.
الأسئلة الشائعة
هل تشفير Base64؟
رقم Base64 هو ترميز يمكن لأي شخص عكسه باستخدام الأبجدية العامة. لا يخفي شيئا. استخدم خوارزمية تشفير حقيقية عندما تكون السرية مطلوبة؛ استخدم Base64 عندما تحتاج القناة إلى بايتات ASCII الآمنة.
لماذا ينتهي إخراج Base64 بعلامات يساوي؟
الأحرف = عبارة عن حشوة. يشيرون إلى أن مجموعة الإدخال النهائية تحتوي على بايت واحد أو اثنين بدلاً من ثلاثة. يتم ترميز Do إلى RG8= وDogs إلى RG9ncw==. احتفظ بالحشوة عند فك التشفير ما لم يوثق البروتوكول أنه تم تجريدها.
ما الذي يشفر إليه الكلب؟
يتم ترميز Dog إلى RG9n بدون أي حشوة، لأن ثلاث بايتات تملأ مجموعة Base64 واحدة بالضبط. يتم عرض إعادة تجميع البتات خطوة بخطوة في المثال العملي في هذه الصفحة.
ما الفرق بين Base64 القياسي والآمن لعنوان URL؟
يستخدم Base64 الآمن لعنوان URL - و_ بدلاً من + و/. تستخدم JWTs وبعض عمليات تضمين أسماء الملفات الأبجدية الآمنة لعنوان URL. فشل فك التشفير باستخدام الأبجدية الخاطئة على تلك الأحرف المستبدلة.
ما هو حجم Base64 الأكبر من الأصل؟
حوالي الثلث أكبر. تصبح ثلاث بايتات أربعة أحرف، وبالتالي تكون النسبة 4/3 قبل الحشو وفواصل الأسطر. تصبح الحمولة التي يبلغ حجمها 3000 بايت 4000 حرف من Base64.
هل يستطيع Base64 تشفير ملف، وليس النص فقط؟
نعم. يقرأ وضع الملف التحميل في المتصفح ويقوم بتشفير وحدات البايت الأولية الخاصة به. يتم فك تشفير المسار العكسي إلى كائن ثنائي كبير الحجم قابل للتنزيل. تزيد الملفات الكبيرة من استخدام الذاكرة في علامة التبويب؛ إبقاء التحميلات متواضعة.
لماذا يبدو النص الذي تم فك تشفيره خاطئًا بعد فك التشفير الصحيح؟
قامت طبقة Base64 باستعادة البايتات، لكن ترميز الأحرف المستخدم لتفسير تلك البايتات لا يتطابق مع المنتج. جرب UTF-8 أولاً، ثم مجموعة الأحرف التي يستخدمها النظام المصدر بالفعل.
هل تقوم هذه الأداة بتحميل الأسرار الملصقة؟
لا، يتم تشغيل التشفير وفك التشفير محليًا. لا يتم إرسال مفاتيح API والرموز المميزة وأجزاء الشهادات الملصقة في المربع إلى الخادم. يتطابق هذا الوعد مع قاعدة التصميم لجميع صفحات الترميز في الحاسبات السريعة.
هل Base64 هو نفسه ترميز URL؟
رقم Base64 يقوم بتعيين ثنائي لأبجدية مكونة من 64 حرفًا للنقل. يتخطى ترميز URL (ترميز النسبة المئوية) الأحرف المحجوزة داخل URIs لكل RFC 3986. وهي تحل مشكلات مختلفة وليست بدائل لبعضها البعض.
ما RFC يحدد الأبجدية؟
يحدد RFC 4648 أبجديات Base64 القياسية والآمنة لعنوان URL وقواعد الحشو المستخدمة هنا. تصف المستندات الأقدم مثل RFC 2045 Base64 في سياق MIME بآليات مماثلة.
ملخص
يقوم ترميز وفك Base64 بتعيين البايتات إلى أبجدية RFC 4648 في مجموعات مكونة من 6 بتات ويعكس العملية محليًا في المتصفح. يصبح Dog RG9n، وDo يصبح RG8=، وDogs يصبح RG9ncw==، مما يوضح المساحة المتروكة لبواقي البايت الواحد والثنائي.
تقوم الأبجدية الآمنة لعنوان URL بتبديل +// بـ -/_، ويزداد الإخراج بحوالي الثلث، ويحدد اختيار مجموعة الأحرف وحدات البايت التي يغذيها وضع النص في برنامج التشفير. لم يتم تحميل أي شيء تم لصقه.
حاسبات ذات صلة
ترميز وفك تشفير URL · الحاسبة الثنائية · الحاسبة السداسية