تصف هذه الأسماء الثلاثة الأنظمة الثنائية ذات الصلة بالنص، ولكنها تخدم قيودًا مختلفة. Base64 وBase64URL يستخدمان مجموعات مكونة من ستة بتات. يستخدم المعيار Base32 مجموعات مكونة من خمس بتات وأبجدية أصغر. الاختيار الصحيح هو الذي يمكن أن يحافظ عليه تطبيق النقل والتخزين والاستلام الخاص بك تمامًا.
قارن الحروف الهجائية قبل الأطوال
يستخدم Base64 القياسي الأحرف الإنجليزية الكبيرة والصغيرة، والأرقام، وعلامة الجمع (+)، والشرطة المائلة (/). ويستبدل Base64URL الحرفين الأخيرين بشرطة (-) وشرطة سفلية (_). وكلاهما يميّز بين حالة الأحرف. أما Base32 القياسي وفق RFC فيستخدم الأحرف الكبيرة من A إلى Z والأرقام من 2 إلى 7. قد يقبل مفكّك الترميز الأحرف الصغيرة للتيسير، لكن يجب أن يحدّد البروتوكول ما إذا كان ذلك مسموحاً، وأن يحدّد الصيغة المعيارية للناتج.
يمكن للقناة غير الحساسة لحالة الأحرف أن تدمر قيمة Base64 مع الحفاظ على قيمة Base32 المحددة بشكل صحيح. يحتوي الرمز المميز URL على قيود مختلفة عن التعليمات البرمجية التي يتم قراءتها بصوت عالٍ عبر الهاتف. لا تختار فقط مدى قصر مظهر العينة.
فهم حجم المقايضة
بتجاهل المجموعة الجزئية النهائية، يحتاج Base64 إلى حوالي 1.33 حرفًا لكل بايت ويحتاج Base32 إلى 1.6 حرفًا. يُصدر Base32 القياسي المبطن مجموعات مكونة من ثمانية أحرف لخمسة بايت. بالنسبة لبايت واحد يحتوي على الحرف f، فإن المتجهات الشائعة هي Zg== في Base64 و MY====== في Base32. تؤدي المدخلات الصغيرة إلى زيادة المساحة المتروكة، لذا قارن أطوال الحمولة الفعلية.
Payload bytes: 66 (ASCII f)
Base64: Zg==
Base64URL: Zg== (or Zg when the protocol omits padding)
RFC Base32: MY======
لا تخلط بين المتغيرات Base32
تم تصميم Crockford Base32 حول معرفات يمكن قراءتها بواسطة الإنسان ويستخدم أبجدية وقواعد غموض مختلفة من RFC Base32. يختلف Base32hex أيضًا. لا يمكن تسليم القيمة التي ينتجها متغير واحد بشكل أعمى إلى وحدة فك ترميز أخرى. قم بتسمية المتغير والأبجدية وسياسة الحشو وأي سلوك المجموع الاختباري في وثائقك.
الترميز أيضًا لا يوفر المصادقة. قد تظل القيمة المكتوبة بشكل خاطئ صالحة من الناحية النحوية ويتم فك تشفيرها إلى بايتات مختلفة. إذا قام المستخدمون بنسخ رمز ما، ففكر في المجموع الاختباري المحدد بواسطة البروتوكول أو خطوة التحقق بدلاً من افتراض أن الحروف الأبجدية تكتشف كل خطأ.
كتابة العقد كاملا
حدد ترتيب بايت الإدخال عندما يكون ذلك مناسبًا، وسلوك الإدخال الفارغ، والحفاظ على الصفر البادئ، والحد الأقصى للطول، وقبول المسافات البيضاء، ومعالجة الأحرف غير الصالحة. قم بتضمين متجهات الاختبار ذات البايتات عالية القيمة والمجموعات الجزئية. استخدم برنامج التشفير ووحدة فك التشفير الذي اخترته بشكل مستقل ضد تلك المتجهات، وليس فقط ضد بعضها البعض؛ يمكن أن تظهر أخطاء المطابقة وكأنها تمر ذهابًا وإيابًا. النماذج القياسية والمتجهات المرجعية موجودة RFC 4648.