فككت نص Base64 وصلني في رسالة فظهر خطأ يقول إن عدد الرموز لا يمكن أن ينتج عن ترميز صحيح، هل النص مقطوع؟

غالبًا نعم. Base64 يُكتب في مجموعات من 4 رموز، والمجموعة الأخيرة قد تكون رمزين أو ثلاثة، لكنها لا يمكن أن تكون رمزًا واحدًا. فإذا بقي رمز وحيد، ترفض الأداة النص بدل أن تخمّن، وهذا يعني عادة أن الرسالة قُطعت أو نُسخ جزء منها فقط. اطلب النص كاملًا من جديد. أما علامات = الناقصة وحدها فلا مشكلة فيها، وتُضاف مع ملاحظة.

نُشر في · دقائق قراءة: 3

لماذا يستحيل الرمز الوحيد؟

كل رمز في Base64 يحمل 6 بتّات، والبايت الواحد 8 بتّات. فالبايت الأخير يحتاج رمزين على الأقل، لأن رمزًا واحدًا لا يكفي لحمله. لذلك إن كان عدد الرموز، بعد تجاهل المسافات وعلامات =، يعطي باقيًا 1 عند القسمة على 4، فلا يوجد أي نص أصلي يمكن أن يعطي هذا الطول.

مثال: نص مقطوع

النص الكامل لعبارة Hello World هو:

SGVsbG8gV29ybGQ=

لو وصلك مقطوعًا بعد تسعة رموز، أي SGVsbG8gV، فستقول الأداة: «عدد رموز النص (9) لا يمكن أن ينتج عن ترميز Base64 صحيح، ويبدو أن النص مقطوع». تسعة رموز تعني مجموعتين كاملتين ورمزًا وحيدًا، وهذا مستحيل. ولن يُفك أي جزء، حتى الجزء السليم في أوله.

مقارنة: حشو ناقص فقط

أما SGVsbG8، سبعة رموز دون علامة = في آخرها، فتُفك إلى Hello مع ملاحظة: «الحشو ناقص: أضيفت 1 من علامات = لإكمال الطول». هنا الطول ممكن، مجموعة كاملة وثلاثة رموز، والناقص علامة الحشو وحدها، وهي لا تحمل بيانات. هذا شائع في الصيغة الآمنة للروابط وفي رموز JWT.

والعكس يُرفض أيضًا: جربنا SGVsbG8== بعلامتي = بدل واحدة، فظهرت رسالة بأن عدد علامات = هو 2 بينما الطول يتطلب 1.

الحالة الأخطر: قطع لا يظهر خطأ

ليس كل قطع يعطي طولًا مستحيلًا. أخذنا ترميز «مرحبا» وهو 2YXYsdit2KjYpw== وقطعناه بعد 11 رمزًا: 2YXYsdit2Kj. فكّته الأداة إلى «مرحب» بلا الألف الأخيرة، مع ملاحظتين: الحشو ناقص، والرمز الأخير يحمل بتّات زائدة جرى تجاهلها، فالنص ليس بالصيغة المعيارية وقد يكون معدّلًا. وحين قطعناه بعد 10 رموز لم يظهر نص أصلًا، بل قالت الأداة إن الناتج ليس نصًا بترميز UTF-8، لأن القطع وقع في منتصف حرف عربي.

  • ملاحظة «الحشو ناقص» وحدها: غالبًا لا مشكلة.
  • ملاحظة «الرمز الأخير يحمل بتّات زائدة»: انتبه، فقد يكون النص مقطوعًا أو معدّلًا، وقارن الناتج بما تتوقعه.
  • رسالة الطول المستحيل: النص ناقص بالتأكيد.

ما العمل؟

  1. الصق النص في ترميز وفك Base64 في وضع «فك الترميز» واقرأ الرسالة أو الملاحظات.
  2. إن ظهرت رسالة الطول، ارجع إلى مصدر النص وانسخه كاملًا. في تطبيقات المحادثة قد تُختصر الرسائل الطويلة وتحتاج إلى فتحها كاملة قبل النسخ.
  3. إن كان المصدر ملفًا أو بريدًا، اطلب إرساله مرفقًا بدل لصقه في رسالة.
  4. لا تحاول إكمال النص بإضافة رموز من عندك، فستحصل على بيانات خاطئة.

وتذكّر أن الرسائل التي تحمل نصوص Base64 ليست سرية بسبب الترميز، فأي شخص يستطيع فكها. إن كان فيها ما يهمك إخفاؤه، فالحماية مسؤولية القناة التي أُرسلت عبرها.

أسئلة شائعة

هل تُحسب المسافات وفواصل الأسطر في الطول؟

لا. الأداة تتجاهلها وتحسب رموز الأبجدية وحدها.

هل تستطيع الأداة فك الجزء السليم من النص المقطوع؟

لا في حالة الطول المستحيل، فهي لا تفك شيئًا حتى لا تعطيك بيانات ناقصة كأنها كاملة.

ما معنى أن النص «ليس بالصيغة المعيارية»؟

أن آخر رمز فيه بتّات لا يمكن أن يكتبها ترميز صحيح. تتجاهلها الأداة وتنبهك، لأن ذلك قد يعني قطعًا أو تعديلًا.