العربية

أدوات المطور · التشفير ووحدة فك التشفير Base64

لماذا يفشل Base64 الملصق في فك التشفير: التفاف الأسطر والأسطر الجديدة وعلامات الاقتباس الذكية

· لماذا يهم

base64 ترميز

سلسلة Base64 قبل وبعد إزالة فواصل الأسطر وتقليص المسافات البيضاء وإصلاح الاقتطاع
الرسم التوضيحي المتجه الأصلي ToolAcre

نادرًا ما ينكسر Base64 أثناء النقل؛ فواصل في الحافظة. يقوم هذا المنشور بفهرسة أخطاء النسخ واللصق التي تنتج أخطاء غير صالحة للأحرف والطول وكيفية اكتشاف كل خطأ بسرعة.

المفتاح الذي كان يعمل في الجهاز وفشل في المتصفح — حرف واحد غير مرئي وبحث لمدة ساعتين

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

التفاف الأسطر في المحطات الطرفية، والأسطر الجديدة اللاحقة من إخراج الأوامر، واستبدال علامات الاقتباس الذكية في برامج تحرير النصوص الغنية وأحرف Unicode المخفية من النسخ واللصق بين التطبيقات المختلفة، كلها تقدم أخطاء تبدو وكأن Base64 معطل عندما تكون المشكلة الفعلية في كيفية نسخه. يقوم هذا المنشور بفهرسة الأخطاء الأكثر شيوعًا ويوضح كيفية اكتشاف كل منها وإصلاحها بسرعة. تتكون الأبجدية Base64 من أحرف كبيرة وصغيرة وأرقام بالإضافة إلى علامات وشرط مائلة وحرف الحشو (علامة يساوي). RFC 4648 محدد: سلسلة Base64 القياسية تحتوي فقط على تلك الأحرف بالإضافة إلى مسافة بيضاء اختيارية إذا كانت الأسطر ملتفة.

التفاف الأسطر من المحطات الطرفية وعملاء البريد الإلكتروني وتنسيق PEM - لماذا يعتبر فاصل الأعمدة 76 أمرًا جيدًا لبعض أجهزة فك التشفير ومميتًا للآخرين

تتسامح العديد من الأدوات مع الانحرافات: فهي تقبل المتغيرات الآمنة URL التي تستخدم الشرطات والشرطات السفلية بدلاً من علامة الجمع والشرطة المائلة، أو تتجاهل الأسطر الجديدة. وحدة فك الترميز الصارمة التي تتبع RFC ترفض أي شيء خارج مجموعة الأحرف المتوقعة وتفشل بسبب وجود خطأ غير صالح في الأحرف. عادةً ما تقوم رسالة الخطأ بتسمية الحرف المخالف أو تلاحظ أنه لا يمكن فك تشفير السلسلة على الإطلاق. عند لصق Base64 من بريد إلكتروني أو محطة طرفية أو سجل دردشة أو مستند منسق، غالبًا ما تنزلق الأحرف غير المرئية أو بدائل الأحرف وتتسبب في فشل فك التشفير. البيانات نفسها جيدة؛ لقد أدى نقل الحافظة إلى إتلافها.

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

الأسطر الجديدة اللاحقة من أدوات الصدى والحافظة - البايت الإضافي الذي يصبح حرفًا إضافيًا

تقبل بعض أجهزة فك التشفير الأسطر الجديدة وتتجاهلها تلقائيًا. ويرفضها الآخرون كأحرف غير صالحة. الإصلاح هو إزالة جميع الأسطر الجديدة والمسافات البيضاء. إذا كانت سلسلة Base64 ملفوفة عبر عدة أسطر في الوحدة الطرفية، فحدد جميع الأسطر، وانسخها إلى محرر واحذف جميع الأسطر الجديدة.

انسخ السلسلة المكونة من سطر واحد الناتجة والصقه في وحدة فك التشفير. هذا هو أول شيء يجب تجربته عندما يفشل اللصق. تعد الأسطر الجديدة الزائدة من أدوات الصدى والحافظة المساعدة سببًا شائعًا آخر. يطبع الأمر echo $API_KEY المفتاح متبوعًا بسطر جديد، وهو السلوك القياسي للأمر. إذا قمت بنسخ هذا الإخراج مباشرة، فسيتم تضمين السطر الجديد في النسخة. تضيف بعض الأجهزة الطرفية سطرًا جديدًا إضافيًا عند النسخ، ويحتفظ بعض مديري الحافظة بالأسطر الجديدة أو يكررونها. العَرَض هو نفس التفاف السطر: حرف إضافي في نهاية السلسلة لا ينتمي إلى Base64.

علامات الاقتباس الذكية والمسافات غير المنفصلة والأحرف ذات العرض الصفري - كيف يعيد محررو النص المنسق كتابة النص العادي

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

تصبح علامة الاقتباس المزدوجة المستقيمة (") زوجًا مجعدًا من اليسار واليمين، ولا يعتبر أي منهما Base64 صالحًا. تبدو المسافة غير المنفصلة (U+00A0) مطابقة للمسافة العادية ولكنها تحتوي على رمز حرف مختلف ولا يتعرف عليها جميع المحللين كمسافة بيضاء. الحل هو اللصق في محرر نص عادي أولاً، والذي يتجاهل كل التنسيق. إذا قمت باللصق من مستند Word أو دردشة منسقة، فالصق أولاً في محرر نص عادي أو HTML textarea وتحقق من وجود أحرف غريبة ثم انسخ من إصدار النص العادي لاستخدامه في أداتك.

فقدان الاقتطاع والحشوة — اختبار length-modulo-4 الذي يخبرك بأن الأحرف مفقودة

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

إذا كان بإمكانك التحقق من المصدر مرة أخرى، انسخه مرة أخرى بعناية. إذا لم يكن الأمر كذلك، فإن الاقتطاع غير قابل للاسترداد. يعد فقدان الحشو مشكلة ذات صلة: يتم أحيانًا تجريد الحشو Base64 الذي يحتوي على علامات المساواة لحفظ بضع بايتات. بعض التطبيقات تحذف الحشو والبعض الآخر يتطلب ذلك. إذا كانت السلسلة مبطنة في الأصل وفقدت الحشوة، فأضفها مرة أخرى. يجب أن تحتوي سلسلة Base64 على 0 أو 1 أو 2 علامات يساوي زائدة بحيث يكون الطول الإجمالي من مضاعفات الأربعة. إذا لم يكن هناك شيء وكان الطول ليس من مضاعفات الأربعة، فمن المحتمل أن تكون المساحة المتروكة قد فقدت.

مثال عملي: إصلاح سلسلة ملفوفة ومبتورة - تنظيفها خطوة بخطوة حتى يتم فك تشفيرها

يوضح المثال العملي هذه الإصلاحات خطوة بخطوة. لنفترض أن المفتاح API المنسوخ يظهر بهذا الشكل في محررك: VGhpcyBpcyBub3QgcmVhbGx5IGEgc2VjcmV0Cg==. ابدأ بتحديد المشكلات. زائدة Cg== غريبة؛ Cg هو base64 لحرف السطر الجديد (hex 0A)، والإضافة == تشير إلى أنه تمت إضافة شيء ما. قم بإزالة زائدة Cg== وحاول فقط VGhpcyBpcyBub3QgcmVhbGx5IGEgc2VjcmV0. وهذا لا يزال غير صحيح. الطول هو 37 حرفًا، وليس من مضاعفات أربعة. القطع مرة أخرى: VGhpcyBpcyBub3QgcmVhbGx5IGEgc2VjcmV0 (35 حرفًا، لا يزال خطأ). تأكد من المصدر الأصلي. السلسلة الصحيحة هي VGhpcyBpcyBub3QgcmVhbGx5IGEgc2VjcmV0 (32 أحرف) مع الحشو المناسب: VGhpcyBpcyBub3QgcmVhbGx5IGEgc2VjcmV0. إضافته: VGhpcyBpcyBub3QgcmVhbGx5IGEgc2VjcmV0=.

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

ما لا يغطيه هذا هو الفساد داخل البايتات المشفرة، والذي لا يمكن لـ Base64 نفسه اكتشافه

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

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

الوجبات الجاهزة: تحقق من الطول والأبجدية قبل إلقاء اللوم على البيانات - كيف يمنحك جهاز التشفير ووحدة فك التشفير Base64 مكانًا محليًا سريعًا لاختبار كل إصلاح

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

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