أداة التحقق من Base64

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

تعمل بالكامل داخل متصفحك، ولا يُرفع أي شيء.

طريقة الاستخدام

  1. الصق السلسلة التي تريد فحصها في حقل المدخلات.
  2. اقرأ النتيجة: صالحة أو غير صالحة، والنوع المكتشف (قياسي أو آمن لعناوين URL)، والحجم بعد فك الترميز.
  3. إذا ظهرت قائمة بالمشكلات، فاستعن بالمواضع المذكورة لتحديد الأحرف غير الصالحة أو المسافات البيضاء أو الحشو الواقع في غير موضعه.
  4. انظر إلى نوع المحتوى المكتشف لمعرفة ما إذا كانت البيانات نصًا أو ملفًا مثل PNG أو PDF أو ZIP.

ما الذي يجعل Base64 صالحًا

  • الأبجدية. لا يُسمح إلا بالأحرف A-Z وa-z و0-9 وحرفين إضافيين: + و/ في Base64 القياسي، و- و_ في Base64URL. والسلسلة التي تخلط بين الزوجين تكون في الغالب تالفة أو مجمّعة من مصدرين.
  • الحشو. لا يجوز أن تظهر علامة = إلا في النهاية، ومرتين على الأكثر. ووجود الحشو في المنتصف يعني عادةً أن قيمتين مرمّزتين دُمجتا معًا.
  • الطول. مع الحشو، يكون الطول من مضاعفات 4. وبدون الحشو، يصلح أي طول باستثناء 4n + 1: فالحرف المتبقي الواحد لا يحمل إلا 6 بت، وهذا لا يكفي لتكوين بايت.

وتضيف أدوات فك الترميز الصارمة قاعدة أخرى: يجب أن تكون البتات الدنيا غير المستخدمة في الحرف الأخير أصفارًا. وتتجاهل كثير من أدوات فك الترميز هذه البتات، لكن بعضها، مثل base64.StdEncoding.Strict() في Go، يرفض السلسلة.

الأخطاء الشائعة وطريقة إصلاحها

المشكلةالسبب المعتادالحل
حرف غير صالحعلامات اقتباس أو شرطات مائلة عكسية أو رموز %2B و%3D نُسخت مع القيمةاحذف الأحرف الزائدة أو فك ترميز URL أولًا
مسافات في المنتصفتحوّلت علامات + إلى مسافات عند مرور القيمة عبر عنوان URL أو نموذجأعِد علامات +، أو استخدم Base64URL لعناوين URL
طول يساوي 4n + 1قيمة مقتطعة بسبب حد لعرض العمود أو سطر سجل أو نسخ جزئيانسخ القيمة كاملة مرة أخرى
حشو في المنتصفسلسلتا Base64 مدموجتان معًاافصلهما وفك ترميز كل جزء على حدة
فواصل أسطرالتفاف الأسطر وفق MIME أو PEMغير ضارة عادةً؛ احذفها حيث يُشترط سطر واحد

الصلاحية لا تعني أن للبيانات معنى

لا يحتوي Base64 على ترويسة ولا على مجموع اختباري، لذا فالصلاحية تعني فقط أن السلسلة قابلة لفك الترميز. وكثير من الكلمات العادية تجتاز الفحص: فأي أربعة أحرف لاتينية تشكّل مجموعة صالحة. ولهذا تفك الأداة ترميز البيانات أيضًا وتعرض حجمها ونوع محتواها. فالنص المقروء أو توقيع ملف معروف مثل PNG أو PDF أو ZIP دليل جيد على أن السلسلة بصيغة Base64 فعلًا؛ أما حفنة من البايتات العشوائية فليست كذلك. ولاختبار ترميزات أخرى أيضًا، جرّب أداة اكتشاف الترميز.

التحقق من Base64 في الشيفرة البرمجية

// JavaScript: Base64 قياسي مع الحشو (يطابق السلسلة الفارغة أيضًا)
/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/

# Python: إطلاق خطأ بدلًا من تخطي الأحرف غير الصالحة
import base64, binascii
try:
    base64.b64decode(s, validate=True)
except binascii.Error:
    print('invalid')

الأسئلة الشائعة

لماذا تُعدّ كلمة عادية سلسلة Base64 صالحة؟
لأنها صالحة فعلًا. فأي تتابع من أحرف الأبجدية بطول مناسب يُفك ترميزه إلى بايتات ما؛ فالكلمة test مثلًا يُفك ترميزها إلى ثلاثة بايتات. تحقّق من نوع المحتوى المكتشف: إذا لم تكن النتيجة نصًا مقروءًا ولا نوع ملف معروفًا، فالأرجح أن المدخلات لم تكن Base64 أصلًا.
هل يكون Base64 الذي يحتوي على مسافات أو فواصل أسطر صالحًا؟

يلفّ MIME وPEM سلاسل Base64 في أسطر، وتتخطى معظم أدوات فك الترميز المسافات البيضاء. لكن حقول JSON وترويسات HTTP وJWT وdata URI تتوقع سلسلة واحدة متصلة. لذلك تعرض الأداة المسافات البيضاء بشكل منفصل لتقرّر ما إذا كانت مهمة في الموضع الذي ستُستخدم فيه السلسلة.

هل يكون Base64 بدون حشو = صالحًا؟
غالبًا نعم. فـ Base64URL يحذف الحشو عادةً، ويسمح RFC 4648 بحذفه عندما يكون الطول معروفًا من السياق. لكن بعض أدوات فك الترميز الصارمة ما زالت تشترطه؛ فإذا رفض نظام ما السلسلة، فأضف علامات = حتى يصبح الطول من مضاعفات 4. أما السلاسل غير المحشوة التي يبلغ طولها 4n + 1 حرفًا فليست صالحة أبدًا.
كيف أتحقق في JavaScript مما إذا كانت السلسلة بصيغة Base64؟
للتحقق الصارم من Base64 المحشو، اختبر السلسلة بتعبير نمطي يسمح بمجموعات من أربعة أحرف من الأبجدية يليها حشو اختياري. والطريقة الأسرع هي استدعاء atob() داخل try/catch. لاحظ أن atob() تُطلق الخطأ InvalidCharacterError عند المدخلات غير الصالحة، لكنها تقبل بصمت المسافات البيضاء والحشو الناقص، ولا تقبل الأحرف الآمنة لعناوين URL.