Base45 एनकोडर और डिकोडर

टेक्स्ट, हेक्स बाइट या फ़ाइलों को Base45 में बदलें और वापस पाएँ। Base45 QR कोड के अल्फ़ान्यूमेरिक मोड के 45 अक्षरों का उपयोग करता है, इसलिए बाइनरी डेटा कम ओवरहेड के साथ QR कोड में समा जाता है।

पूरी तरह आपके ब्राउज़र में चलता है। कुछ भी अपलोड नहीं होता।

उपयोग कैसे करें

  1. टेक्स्ट को Base45 में बदलने के लिए “एनकोड करें” चुनें, या Base45 को वापस टेक्स्ट या बाइट में बदलने के लिए “डिकोड करें”।
  2. अपना इनपुट टाइप या पेस्ट करें, या कोई फ़ाइल खोलें। सभी स्पेस बनाए रखें: वे वर्णमाला का हिस्सा हैं।
  3. सर्टिफ़िकेट पेलोड जैसे बाइनरी डेटा को डिकोड करते समय आउटपुट को हेक्स पर कर दें।
  4. परिणाम कॉपी करें या उसे फ़ाइल के रूप में डाउनलोड करें।

Base45 क्या है?

Base45 को RFC 9285 में परिभाषित किया गया है। इसकी वर्णमाला में अंक 0-9, बड़े अक्षर A-Z और नौ चिह्न हैं: स्पेस और $ % * + - . / :। ये ठीक वही 45 अक्षर हैं जिन्हें QR कोड अपने संक्षिप्त अल्फ़ान्यूमेरिक मोड में सहेज सकता है। ध्यान दें कि स्पेस वर्णमाला का एक असली अक्षर है, विभाजक नहीं।

एनकोडर इनपुट को एक बार में दो बाइट लेता है, उन्हें 0 से 65535 तक की एक संख्या के रूप में पढ़ता है और उस संख्या को तीन Base45 अंकों में लिखता है, सबसे कम महत्व वाला अंक पहले। आख़िर में बचा एक अकेला बाइट दो अक्षर बनता है। टेक्स्ट के रूप में परिणाम इनपुट के आकार का 1.5 गुना होता है, यानी Base64 से बड़ा।

Base45 QR कोड के लिए उपयुक्त क्यों है

अल्फ़ान्यूमेरिक मोड में QR कोड दो अक्षरों को 11 बिट में रखता है। Base64 इस मोड का उपयोग नहीं कर सकता क्योंकि उसे छोटे अक्षर चाहिए, इसलिए वह प्रति अक्षर 8 बिट वाले बाइट मोड पर लौट आता है, यानी डेटा के हर बाइट के लिए लगभग 10.7 बिट। अल्फ़ान्यूमेरिक मोड में Base45 को प्रति बाइट केवल 8.25 बिट चाहिए, इसलिए वही डेटा एक छोटे QR कोड में समा जाता है जिसे स्कैन करना आसान होता है।

डिकोड करते समय स्पेस को ठीक वैसे ही रखें जैसे वे हैं; केवल लाइन ब्रेक अनदेखे किए जाते हैं। छोटे अक्षर वर्णमाला का हिस्सा नहीं हैं और उन्हें अमान्य बताया जाता है।

EU डिजिटल COVID सर्टिफ़िकेट डिकोड करना

EU डिजिटल COVID सर्टिफ़िकेट के QR कोड में ऐसा टेक्स्ट होता है जो HC1: से शुरू होता है। बाक़ी हिस्सा Base45 है: सर्टिफ़िकेट डेटा को CBOR के रूप में एनकोड किया जाता है, COSE से साइन किया जाता है, zlib से कंप्रेस किया जाता है और फिर Base45 में एनकोड किया जाता है। अंदर देखने के लिए:

  1. HC1: प्रीफ़िक्स हटाएँ। इसके चारों अक्षर मान्य Base45 हैं, इसलिए इन्हें छोड़ देने पर ग़लत बाइट मिलते हैं।
  2. बाक़ी हिस्से को यहाँ हेक्स आउटपुट के साथ डिकोड करें। zlib डेटा आमतौर पर बाइट 78 से शुरू होता है।
  3. बाइट को zlib से डीकंप्रेस करें और CBOR को किसी दूसरे टूल से पार्स करें।

यह टूल केवल Base45 वाला चरण संभालता है। यह डेटा को डीकंप्रेस या पार्स नहीं करता और सिग्नेचर की जाँच भी नहीं करता।

कोड में Base45

# Python (pip install base45)
import base45
base45.b45encode(b'AB')     # RFC 9285 का उदाहरण: BB8
base45.b45decode('BB8')     # b'AB'

तकनीकी विवरण

वर्णमाला0-9 A-Z स्पेस $ % * + - . / :
आउटपुट का आकारहर 2 बाइट पर 3 अक्षर (150%)
पैडिंगकोई नहीं
मानकRFC 9285
केस-संवेदीहाँ

उदाहरण

इनपुट (UTF-8)आउटपुट
Hello, World!%69 VDK2E:3404ESVDX0
Base64.isSH8LQEG%61*5P2
你好C-SEFK*.K

अक्सर पूछे जाने वाले प्रश्न

Base45 आउटपुट में स्पेस क्यों होते हैं?

स्पेस वर्णमाला के 45 अक्षरों में से एक है, इसलिए उसमें डेटा होता है। Base45 टेक्स्ट में स्पेस न हटाएँ और न ही उन्हें मिलाकर कम करें, वरना डिकोडिंग विफल हो जाएगी या ग़लत बाइट मिलेंगे।

HC1: स्ट्रिंग को डिकोड कैसे करें?

HC1: प्रीफ़िक्स हटाएँ, बाक़ी हिस्से को हेक्स आउटपुट के साथ डिकोड करें, फिर परिणाम को zlib से डीकंप्रेस करें और CBOR डेटा को किसी अलग टूल से पढ़ें। यह टूल केवल Base45 वाला चरण करता है।

क्या Base45 केस-संवेदी है?

हाँ। वर्णमाला में केवल बड़े अक्षर शामिल हैं, क्योंकि QR के अल्फ़ान्यूमेरिक मोड में छोटे अक्षर नहीं होते। छोटे अक्षरों वाले इनपुट को उसकी स्थिति के साथ अमान्य बताया जाता है।

क्या Base45, Base64 से ज़्यादा संक्षिप्त है?

सामान्य टेक्स्ट के रूप में नहीं: Base45 इनपुट के आकार का 1.5 गुना होता है और Base64 लगभग 1.33 गुना। QR कोड के अंदर हाँ, क्योंकि Base45 ज़्यादा सघन अल्फ़ान्यूमेरिक मोड का उपयोग कर सकता है।