Crockford Base32 एनकोडर और डिकोडर

टेक्स्ट, हेक्स बाइट या फ़ाइलों को Douglas Crockford के Base32 में बदलें और वापस पाएँ। डिकोडर टाइपिंग की ग़लतियों को माफ़ कर देता है: यह केस और हाइफ़न को अनदेखा करता है, O को 0 और I या L को 1 पढ़ता है।

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

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

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

Crockford Base32 क्या है?

Douglas Crockford ने यह Base32 वर्णमाला ऐसे पहचानकर्ताओं के लिए बनाई जिन्हें लोग पढ़ते, टाइप करते और बोलकर बताते हैं। इसमें दस अंक और 22 बड़े अक्षर हैं: 0123456789ABCDEFGHJKMNPQRSTVWXYZ। अक्षर I और L इसलिए छोड़े गए हैं क्योंकि वे अंक 1 जैसे दिखते हैं, O इसलिए क्योंकि वह 0 जैसा दिखता है, और U इसलिए ताकि ग़लती से अश्लील शब्द बन जाने की संभावना कम हो।

हर चिह्न में 5 बिट होते हैं, इसलिए 5 बाइट 8 अक्षर बनते हैं, ठीक RFC 4648 Base32 की तरह। चिह्न बढ़ते हुए ASCII क्रम में हैं, इसलिए अक्षरों के एक ही केस वाली बिना पैडिंग की स्ट्रिंग उसी क्रम में लगती हैं जिस क्रम में उनका एनकोड किया गया डेटा। Crockford के स्पेसिफ़िकेशन में पैडिंग नहीं होती, इसलिए “पैडिंग” विकल्प बंद ही रखें।

लचीली डिकोडिंग

Crockford का स्पेसिफ़िकेशन डिकोडर से अपेक्षा करता है कि वे वही स्वीकार करें जो लोग असल में टाइप करते हैं, और यह टूल ऐसा ही करता है:

  • बड़े और छोटे अक्षरों को एक जैसा माना जाता है।
  • अक्षर O को अंक 0 पढ़ा जाता है, और अक्षर I और L को 1।
  • हाइफ़न, जो लंबे कोड को पढ़ने में आसान बनाने के लिए डाले जा सकते हैं, अनदेखे कर दिए जाते हैं, और स्पेस व लाइन ब्रेक भी।

अक्षर U मान्य नहीं है और उसे उसकी स्थिति के साथ बताया जाता है।

बाइट, संख्याएँ और ULID

Crockford अपनी एनकोडिंग को संख्याओं के संदर्भ में बताते हैं, जबकि यह टूल बाइट के एक क्रम को RFC 4648 की तरह 5-बिट समूहों में, Crockford के चिह्नों के साथ एनकोड करता है। जब बिट की संख्या 5 का गुणज नहीं होती, तो संख्या-आधारित इम्प्लीमेंटेशन अतिरिक्त शून्य बिट आगे रखते हैं और यह टूल उन्हें अंत में रखता है, इसलिए परिणाम अलग हो सकते हैं।

ULID इसका एक आम उदाहरण है। यह Crockford वर्णमाला का उपयोग करता है, लेकिन अपने 128-बिट मान को 26 अक्षरों में एक संख्या के रूप में एनकोड करता है, इसलिए यहाँ किसी ULID के 16 बाइट उसी स्ट्रिंग में एनकोड नहीं होते, और किसी ULID को डिकोड करने पर दो बिट खिसके हुए बाइट मिलते हैं। Crockford के स्पेसिफ़िकेशन का वैकल्पिक चेक चिह्न, यानी मान मॉड्यूलो 37 के लिए एक अतिरिक्त अक्षर, समर्थित नहीं है: यह टूल न तो उसे जोड़ता है और न ही उसकी जाँच करता है।

तकनीकी विवरण

वर्णमाला0-9 A-Z (I L O U के बिना)
आउटपुट का आकारहर 5 बाइट पर 8 अक्षर (160%)
पैडिंगकोई नहीं
मानकCrockford Base32 (2002)
केस-संवेदीनहीं

उदाहरण

इनपुट (UTF-8)आउटपुट
Hello, World!91JPRV3F5GG5EVVJDHJ22
Base64.is89GQ6S9P6GQ6JWR
你好WJYT1SD5QM

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

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

नहीं। आउटपुट डिफ़ॉल्ट रूप से बड़े अक्षरों में होता है, और “छोटे अक्षर” विकल्प उसे छोटे अक्षरों में बदल देता है। डिकोडर दोनों स्वीकार करता है, एक ही स्ट्रिंग में मिले-जुले होने पर भी।

वर्णमाला में I, L, O और U क्यों नहीं हैं?

I और L को आसानी से 1 समझा जा सकता है, और O को 0, इसलिए इन्हें छोड़ दिया गया है और डिकोड करते समय इन्हें उन्हीं अंकों के रूप में पढ़ा जाता है। U को इसलिए बाहर रखा गया है ताकि रैंडम कोड से आपत्तिजनक अंग्रेज़ी शब्द बनने की संभावना कम हो।

क्या यह टूल Crockford चेक चिह्न का समर्थन करता है?
नहीं। स्पेसिफ़िकेशन मॉड्यूलो 37 चेकसम वाले एक वैकल्पिक अतिरिक्त अक्षर की अनुमति देता है, जो अतिरिक्त चिह्न * ~ $ = U का उपयोग करता है। यह टूल इसे न जोड़ता है और न ही इसकी जाँच करता है, इसलिए डिकोड करने से पहले चेक चिह्न हटा दें।
क्या यहाँ ULID डिकोड किया जा सकता है?

उसके ठीक-ठीक 16 बाइट में नहीं। ULID अपने 128 बिट को एक संख्या के रूप में एनकोड करता है और अतिरिक्त बिट आगे रखता है, जबकि यह टूल बाइट समूहों के साथ काम करता है और उन्हें अंत में रखता है। टाइमस्टैम्प और रैंडम हिस्से पढ़ने के लिए किसी ULID लाइब्रेरी का उपयोग करें।