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

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

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

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

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

Base32hex क्या है?

Base32hex, RFC 4648 के खंड 7 में परिभाषित "Base 32 Encoding with Extended Hex Alphabet", यानी एक्सटेंडेड हेक्स वर्णमाला वाली Base 32 एनकोडिंग है। यह ठीक मानक Base32 की तरह काम करता है: हर अक्षर में 5 बिट होते हैं, हर 5 बाइट 8 अक्षर बनते हैं, और आउटपुट को = से 8 के गुणज तक पैड किया जाता है। अंतर केवल वर्णमाला का है। A-Z 2-7 के बजाय Base32hex वहीं से गिनती आगे बढ़ाता है जहाँ हेक्साडेसिमल रुकता है: अंक 0 से 9 का मान 0 से 9 है, A का 10 और V का 31।

चूँकि दोनों वर्णमालाओं में ज़्यादातर अक्षर एक जैसे हैं, इसलिए Base32hex स्ट्रिंग अक्सर बिना किसी त्रुटि के मानक Base32 डिकोडर में डाली जा सकती है, लेकिन जो बाइट निकलते हैं वे ग़लत होते हैं। हमेशा उसी वेरिएंट से डिकोड करें जिससे एनकोड किया गया था।

क्रम बना रहता है

वर्णमाला बढ़ते हुए ASCII क्रम में है और हर अक्षर का मान उसकी स्थिति के साथ बढ़ता है। नतीजतन, दो Base32hex स्ट्रिंग की अक्षर-दर-अक्षर तुलना करने पर वही क्रम मिलता है जो उनके मूल बाइट की तुलना करने पर मिलता। RFC 4648 इसे वह गुण बताता है जो मानक Base32 और Base64 में नहीं है, और यही Base32hex को डेटाबेस और की-वैल्यू स्टोर जैसे क्रमबद्ध स्टोरेज में कुंजियों के लिए उपयुक्त बनाता है।

सभी स्ट्रिंग को अक्षरों के एक ही केस में रखें, और जब इनपुट की लंबाई अलग-अलग हो तो पैडिंग बंद कर दें: = चिह्न क्रम में अंकों और अक्षरों के बीच आता है और क्रम बिगाड़ सकता है।

DNSSEC NSEC3 में Base32hex

RFC 5155 में परिभाषित NSEC3 रिकॉर्ड यह साबित करते हैं कि कोई DNS नाम मौजूद नहीं है, और साथ ही ज़ोन के हर नाम की सूची बनाना कठिन करते हैं। हर नाम को SHA-1 से हैश किया जाता है, और 20 बाइट के हैश को बिना पैडिंग के 32 अक्षरों वाले Base32hex लेबल के रूप में लिखा जाता है, जो आमतौर पर छोटे अक्षरों में दिखाया जाता है। चूँकि एनकोडिंग हैश का क्रम बनाए रखती है, इसलिए हैश किए गए नाम एक क्रमबद्ध शृंखला बनाते हैं। किसी हैश को ऐसे लेबल में बदलने के लिए उसे हेक्स इनपुट के रूप में पेस्ट करें, “पैडिंग” बंद करें और “छोटे अक्षर” चुनें। यह टूल केवल एनकोडिंग वाला चरण करता है; यह सॉल्ट और कई बार दोहराया गया NSEC3 हैश नहीं निकालता।

कोड में Base32hex

# Python 3.10+
import base64
base64.b32hexencode(b'foobar')          # b'CPNMUOJ1E8======'
base64.b32hexdecode('CPNMUOJ1E8======') # b'foobar'

// Go (import "encoding/base32")
base32.HexEncoding.EncodeToString(data)
base32.HexEncoding.WithPadding(base32.NoPadding).EncodeToString(data)

तकनीकी विवरण

वर्णमाला0-9 A-V
आउटपुट का आकारहर 5 बाइट पर 8 अक्षर (160%)
पैडिंग= से 8 अक्षरों के गुणज तक
मानकRFC 4648 खंड 7
केस-संवेदीनहीं

उदाहरण

इनपुट (UTF-8)आउटपुट
Hello, World!91IMOR3F5GG5ERRIDHI22===
Base64.is89GN6P9M6GN6ISO=
你好SIUQ1PD5NK======

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

Base32 और Base32hex में क्या अंतर है?
दोनों प्रति अक्षर 5 बिट और पैडिंग के एक जैसे नियमों का उपयोग करते हैं। मानक Base32 A-Z 2-7 का उपयोग करता है; Base32hex 0-9 A-V का उपयोग करता है, जिससे डेटा का क्रम बना रहता है। दोनों को एक-दूसरे की जगह इस्तेमाल नहीं किया जा सकता।
क्या Base32hex केस-संवेदी है?

वर्णमाला बड़े अक्षरों में परिभाषित है, लेकिन यह डिकोडर छोटे अक्षरों वाला इनपुट भी स्वीकार करता है। अगर आपको छोटे अक्षरों में आउटपुट चाहिए, जैसे DNS लेबल के लिए, तो “छोटे अक्षर” चालू करें।

क्या पैडिंग का उपयोग करना चाहिए?
RFC 4648 = से 8 अक्षरों के गुणज तक पैड करता है, लेकिन NSEC3 समेत कई फ़ॉर्मैट इसे छोड़ देते हैं। डिकोडर दोनों स्वीकार करता है, इसलिए वही चुनें जो प्राप्त करने वाला सिस्टम अपेक्षित करता है।
क्या Base32hex स्ट्रिंग हेक्साडेसिमल जैसी ही है?
नहीं। जिस Base32hex स्ट्रिंग में संयोग से केवल 0-9 और A-F हों, वह हेक्स जैसी दिखती है, लेकिन उसके हर अक्षर में 4 के बजाय 5 बिट होते हैं। सामान्य हेक्स के साथ काम करने के लिए Base16 टूल का उपयोग करें।