يستخدم Base62 عادةً الأرقام والأحرف الكبيرة والصغيرة. وهذا يجعلها جذابة للمعرفات المدمجة التي لا تحتوي على علامات ترقيم. يستخدم Base64 64 رمزًا ويحزم مجموعات من البتات مباشرةً. على الرغم من أن الأسماء متشابهة، إلا أن تطبيقات Base62 غالبًا ما تقوم بنموذج الإدخال كرقم، مما يؤدي إلى إنشاء أسئلة مختلفة حول إمكانية التشغيل البيني.
الترتيب الأبجدي هو جزء من التنسيق
يمكن لمكتبتين Base62 اختيار ترتيبات مختلفة للأرقام والأحرف الكبيرة والأحرف الصغيرة. تمثل نفس السلسلة المرئية أرقامًا مختلفة. نظام يستخدم 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz لا يتفق مع الشخص الذي يضع الأحرف الصغيرة أولاً. تسجيل الأبجدية وناقلات الاختبار في البروتوكول؛ "Base62" وحده لا يكفي.
حساسية الحالة مهمة أيضًا. يمكن للوكيل ذو الأحرف الصغيرة أو ترتيب قاعدة البيانات غير الحساسة لحالة الأحرف أو المعرف الذي تمت تسويته يدويًا تغيير قيمته. إذا تجاهلت طبقة التخزين حالة الأحرف، فلن يكون Base62 العادي أو Base64 تمثيلًا آمنًا بدون قرار تصميم إضافي.
الحفاظ على الطول عند تشفير البايتات
خذ بعين الاعتبار ملفين يحتويان على النظام الست عشري 01 و 0001. يتم تفسيرها على أنها أعداد صحيحة غير موقعة، وكلاهما له قيمة واحدة. يفقد التحويل من عدد صحيح إلى Base62 التمييز. يحتاج تنسيق Base62 الموجه للبايت إلى معالجة واضحة للصفر البادئ أو حقل طول. وينطبق هذا بشكل خاص على الرموز العشوائية وقيم التشفير ذات الطول الثابت.
const a = BigInt('0x01');
const b = BigInt('0x0001');
console.log(a === b); // true: numeric equality loses byte length
اختر بناءً على ما تعنيه القيمة
إذا كنت تقوم بتقصير عدد صحيح من قاعدة البيانات تحت تحكم تطبيق واحد، فقد تكون أبجدية Base62 الموثقة ملائمة. إذا كنت تقوم بنقل بايتات عشوائية بين أنظمة مستقلة، فإن Base64URL عادةً ما يوفر عقدًا موحدًا أكثر وضوحًا. فهو يستبدل الشرطة والشرطة السفلية بعلامات الترقيم القياسية Base64 مع الاحتفاظ بنفس المجموعة المكونة من ستة بت.
الترميز ليس العشوائية. تظل الأعداد الصحيحة المتسلسلة قابلة للتنبؤ بها بعد تحويل Base62. إذا كانت المعرفات بحاجة إلى مقاومة التخمين، فقم بإنشاء إنتروبيا كافية لا يمكن التنبؤ بها باستخدام مصدر عشوائي للتشفير، ثم قم بتشفير البايتات الناتجة دون فقدان الطول. لا تتعامل مع الرمز المميز ذو المظهر المضغوط كدليل على أن جيله آمن.
عند مقارنة أحجام المخرجات، قم بتضمين البادئات وقواعد الحشو وأي بيانات تعريف طولية. ذهابًا وإيابًا على الأقل مدخلاً فارغًا، بايت صفر، عدة أصفار بادئة وبايت عالي القيمة. تم توحيد الأبجدية Base64URL في RFC 4648; يجب أن يحدد تطبيق Base62 التفاصيل الإضافية بنفسه.