Ubuntu में base32 कमांड: एन्कोडिंग और डिकोडिंग गाइड

परिचय

लिनक्स तथा Ubuntu वातावरण में रॉ बाइनरी और टेक्स्ट डेटा को सुरक्षित रूप से प्रोसेस व ट्रांसमिट करने के लिए base32 टूल एक अत्यंत उपयोगी यूटिलिटी है। इस गाइड में हम बेस32 एल्गोरिदम के बुनियादी सिद्धांतों से लेकर व्यावहारिक एन्कोडिंग, डिकोडिंग, लाइन फॉर्मेटिंग और डेटा अखंडता (Integrity) की जांच तक की पूरी कार्यप्रणाली को विस्तार से समझेंगे।

बाइनरी पाथ सत्यापन और बेसिक स्ट्रिंग एन्कोडिंग

सिस्टम में टूल की उपलब्धता और उसकी निष्पादन योग्य फ़ाइल (Executable) का लोकेशन जांचने के लिए टर्मिनल पर which base32 रन करें।

which base32 निष्पादन पथ जांच

यह यूटिलिटी इनपुट डेटा को बेस32 मानक के अनुसार परिवर्तित या पुनर्प्राप्त करके स्टैंडर्ड आउटपुट (stdout) पर भेजती है।
उदाहरण के तौर पर, पाइपलाइन सिंटैक्स (|) का उपयोग करके "Hello Ubuntu" स्ट्रिंग को सीधे बेस32 फॉर्मेट में एन्कोड किया जा सकता है।

⚙️ [महत्वपूर्ण कमांड विकल्प]

-d, --decode : एन्कोड किए गए डेटा को उसके मूल रूप में वापस लाता है।
-i, --ignore-garbage : डिकोडिंग के दौरान अमान्य वर्णों (Non-alphabet characters) को छोड़ देता है।
-w, --wrap=COLS : आउटपुट में वर्णों की अधिकतम सीमा तय करके नई पंक्ति जोड़ता है (0 का मतलब कोई लाइन-रैप नहीं, डिफ़ॉल्ट 76 है)।
--help : कमांड के उपयोग संबंधी सहायता प्रदर्शित करता है।
--version : वर्तमान पैकेज संस्करण की जानकारी दिखाता है।

echo -n “Hello Ubuntu” को बेस32 में बदलना

टेक्स्ट फ़ाइल एन्कोडिंग और लाइन-रैपिंग (-w) प्रबंधन

फ़ाइल स्तर पर एन्कोडिंग का परीक्षण करने के लिए सबसे पहले कुछ डेमो सामग्री के साथ sample.txt नामक फ़ाइल तैयार करते हैं।

sample.txt परीक्षण फ़ाइल तैयार करना

कमांड के साथ आर्ग्युमेंट के रूप में फ़ाइल पाथ देने पर यह उसकी पूरी सामग्री को प्रोसेस करके बेस32 स्ट्रीम जनरेट करता है।
सामान्य स्थिति में पठनीयता बनाए रखने के लिए आउटपुट प्रत्येक 76 वर्णों के बाद स्वतः अगली पंक्ति में टूट जाता है।

base32 sample.txt आउटपुट

यदि आप शैल स्क्रिप्ट्स के भीतर वेरिएबल असाइनमेंट या नेटवर्क ट्रांसमिशन कर रहे हैं, तो -w 0 फ़्लैग जोड़कर ऑटो-रैप को पूरी तरह बंद कर सकते हैं। इससे संपूर्ण एन्कोडेड डेटा एक सतत (Continuous) सिंगल लाइन में प्राप्त होता है।

base32 -w 0 द्वारा सिंगल लाइन आउटपुट

एन्कोडेड डेटा से मूल सामग्री की पुनर्प्राप्ति (-d)

डिकोडिंग प्रक्रिया को समझने के लिए पहले "Welcome to Ubuntu Linux" स्ट्रिंग को बेस32 में बदलकर encoded.txt फ़ाइल में रीडायरेक्ट कर लेते हैं।

परीक्षण डेटा को encoded.txt में सहेजना

cat कमांड की मदद से हम यह पुष्टि कर सकते हैं कि टार्गेट फ़ाइल में बेस32 स्ट्रिंग सही तरीके से राइट हुई है या नहीं।

cat encoded.txt सामग्री जांच

अब -d (या --decode) विकल्प लागू करके एन्कोडेड फ़ाइल को प्रोसेस करने पर सिस्टम ओरिजिनल प्लेनटेक्स्ट को रीस्टोर कर देता है।
परिणामस्वरूप टर्मिनल स्क्रीन पर हमारा प्रारंभिक संदेश "Welcome to Ubuntu Linux" बिना किसी त्रुटि के दिखाई देता है।

base32 -d encoded.txt डिकोडिंग परिणाम

बाइनरी डेटा हैंडलिंग, पैडिंग विश्लेषण और अखंडता सत्यापन

बाइनरी डेटा के व्यवहार और उसकी सत्यता परखने के लिए /dev/urandom स्रोत से 10 बाइट्स का यादृच्छिक डेटा लेकर sample.bin फ़ाइल बनाते हैं।

head कमांड से 10 बाइट्स बाइनरी जनरेट करना

तैयार बाइनरी फ़ाइल को base32 से एन्कोड करके sample.b32 में सेव करते हैं।
चूंकि 10-बाइट का ब्लॉक 5-बाइट (40-बिट) बाउंड्री में सटीक रूप से विभाजित हो जाता है, इसलिए इस आउटपुट के अंत में किसी पैडिंग वर्ण (=) की आवश्यकता नहीं पड़ती।

बाइनरी डेटा को sample.b32 में एन्कोड करना

रूपांतरण के बाद जेनरेट हुई बेस32 सामग्री का अवलोकन करने के लिए फ़ाइल को स्क्रीन पर प्रिंट करें।

cat sample.b32 आउटपुट

डेटा सुरक्षा और शुद्धता सुनिश्चित करने के लिए हम डिकोड की गई स्ट्रीम को पाइपलाइन के माध्यम से सीधे cmp कमांड में भेजकर मूल sample.bin से बाइट-दर-बाइट मिलान करते हैं।
यदि दोनों फ़ाइलों में कोई अंतर नहीं मिलता, तो && ऑपरेटर के जरिए सत्यापन की पुष्टि वाला संदेश प्रदर्शित होता है।

cmp टूल द्वारा बाइनरी डेटा अखंडता सत्यापन

इस प्रकार Ubuntu सिस्टम पर base32 टूल का प्रयोग करके टेक्स्ट और बाइनरी दोनों प्रकार के डेटा को सुरक्षित प्रारूप में एन्कोड व डिकोड किया जा सकता है। नेटवर्क प्रोटोकॉल सीमाओं या कैरेक्टर एन्कोडिंग संबंधी समस्याओं से निपटने के लिए यह तकनीक बेहद कारगर है।