बेस62 आमतौर पर अंकों और अपरकेस और लोअरकेस अक्षरों का उपयोग करता है। यह इसे बिना किसी विराम चिह्न वाले संक्षिप्त पहचानकर्ताओं के लिए आकर्षक बनाता है। Base64 64 प्रतीकों का उपयोग करता है और बिट्स के समूहों को सीधे पैक करता है। हालाँकि नाम समान हैं, बेस 62 कार्यान्वयन अक्सर इनपुट को एक संख्या के रूप में मॉडल करते हैं, जो अलग-अलग अंतर-संचालनीयता प्रश्न पैदा करता है।
वर्णमाला क्रम प्रारूप का हिस्सा है
दो बेस62 लाइब्रेरीज़ अंकों, अपरकेस अक्षरों और लोअरकेस अक्षरों के लिए अलग-अलग ऑर्डर चुन सकती हैं। फिर वही दृश्यमान स्ट्रिंग विभिन्न संख्याओं का प्रतिनिधित्व करती है। एक सिस्टम का उपयोग कर रहा है 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz उस बात से सहमत नहीं है जो छोटे अक्षरों को पहले रखता है। प्रोटोकॉल में वर्णमाला रिकॉर्ड करें और वेक्टर का परीक्षण करें; अकेले "बेस62" पर्याप्त नहीं है।
केस की संवेदनशीलता भी मायने रखती है. एक लोअरकेसिंग प्रॉक्सी, एक केस-असंवेदनशील डेटाबेस संयोजन या मैन्युअल रूप से सामान्यीकृत पहचानकर्ता इसका मूल्य बदल सकता है। यदि आपकी भंडारण परत मामले को नजरअंदाज करती है, तो न तो साधारण बेस62 और न ही Base64 अतिरिक्त डिज़ाइन निर्णय के बिना एक सुरक्षित प्रतिनिधित्व है।
बाइट्स को एन्कोड करते समय लंबाई सुरक्षित रखें
हेक्साडेसिमल वाली दो फ़ाइलों पर विचार करें 01 और 0001. अहस्ताक्षरित पूर्णांक के रूप में व्याख्या की गई, दोनों का मान एक है। एक नंगे पूर्णांक-से-बेस62 रूपांतरण अंतर खो देता है। बाइट-उन्मुख बेस 62 प्रारूप को स्पष्ट अग्रणी-शून्य हैंडलिंग या लंबाई फ़ील्ड की आवश्यकता होती है। यह यादृच्छिक टोकन और निश्चित-लंबाई क्रिप्टोग्राफ़िक मानों के लिए विशेष रूप से प्रासंगिक है।
const a = BigInt('0x01');
const b = BigInt('0x0001');
console.log(a === b); // true: numeric equality loses byte length
मूल्य का क्या अर्थ है इसके आधार पर चुनें
यदि आप एक एप्लिकेशन के नियंत्रण के तहत डेटाबेस पूर्णांक को छोटा कर रहे हैं, तो एक दस्तावेजित बेस 62 वर्णमाला सुविधाजनक हो सकती है। यदि आप स्वतंत्र सिस्टम के बीच मनमाने बाइट्स का परिवहन कर रहे हैं, तो Base64URL आमतौर पर एक स्पष्ट मानकीकृत अनुबंध प्रदान करता है। यह समान छह-बिट ग्रुपिंग को बरकरार रखते हुए मानक Base64 विराम चिह्न के लिए डैश और अंडरस्कोर को प्रतिस्थापित करता है।
एन्कोडिंग यादृच्छिकीकरण नहीं है. बेस62 रूपांतरण के बाद अनुक्रमिक पूर्णांक पूर्वानुमानित रहते हैं। यदि पहचानकर्ताओं को अनुमान लगाने से बचना है, तो क्रिप्टोग्राफ़िक यादृच्छिक स्रोत का उपयोग करके पर्याप्त अप्रत्याशित एन्ट्रॉपी उत्पन्न करें, फिर लंबाई खोए बिना परिणामी बाइट्स को एन्कोड करें। किसी कॉम्पैक्ट दिखने वाले टोकन को इस बात का प्रमाण न मानें कि उसकी पीढ़ी सुरक्षित है।
आउटपुट आकार की तुलना करते समय, उपसर्ग, पैडिंग नियम और किसी भी लंबाई का मेटाडेटा शामिल करें। राउंडट्रिप कम से कम एक खाली इनपुट, एक शून्य बाइट, कई अग्रणी शून्य और एक उच्च-मूल्यवान बाइट। Base64URL वर्णमाला को मानकीकृत किया गया है RFC 4648; बेस62 एप्लिकेशन को अतिरिक्त विवरण स्वयं निर्दिष्ट करना होगा।