उपयोग कैसे करें
- टेक्स्ट या बाइट को Base58 में बदलने के लिए “एनकोड करें” चुनें, या Base58 स्ट्रिंग को वापस डेटा में बदलने के लिए “डिकोड करें” चुनें।
- “वर्णमाला” चुनें। Bitcoin डिफ़ॉल्ट है, और IPFS व Solana भी इसी का उपयोग करते हैं।
- अपना इनपुट टाइप या पेस्ट करें। अगर आपके पास हैश या सार्वजनिक कुंजी जैसे रॉ बाइट हैं, तो इनपुट को “हेक्स” पर कर दें।
- “Base58Check चेकसम” तभी चालू करें जब स्ट्रिंग में 4 बाइट का चेकसम हो, फिर परिणाम कॉपी करें या डाउनलोड करें।
Base58 क्या है?
Base58 एक बाइनरी-से-टेक्स्ट एनकोडिंग है, जिसे Bitcoin के लिए बनाया गया था। इसकी वर्णमाला 10 अंकों और 52 लैटिन अक्षरों, यानी कुल 62 अक्षरों से बनी है, जिनमें से वे चार हटा दिए गए हैं जिन्हें आपस में आसानी से ग़लत पढ़ा जा सकता है: 0 (शून्य), O (बड़ा o), I (बड़ा i) और l (छोटा L)। इसमें +, / या = भी नहीं होते, इसलिए Base58 स्ट्रिंग को डबल क्लिक से पूरा चुना जा सकता है और बिना एस्केपिंग के URL में डाला जा सकता है।
Base64 के विपरीत, Base58 इनपुट को बिट समूहों में नहीं काटता। पूरे इनपुट को एक बड़ी संख्या माना जाता है और उसे आधार 58 में लिखा जाता है, इसलिए इसमें पैडिंग नहीं होती और एक बाइट बदलने से आउटपुट के कई अक्षर बदल सकते हैं। शुरुआती शून्य बाइट का कोई संख्यात्मक मान नहीं होता, इसलिए उन्हें बचाए रखने के लिए हर एक को वर्णमाला के पहले अक्षर (Bitcoin वर्णमाला में 1) के रूप में लिखा जाता है। आउटपुट इनपुट के आकार का लगभग 1.37 गुना होता है।
Base58 का उपयोग कहाँ होता है
- Bitcoin। लेगेसी एड्रेस और WIF प्राइवेट कुंजियाँ Base58Check में होती हैं, यानी वर्ज़न बाइट और चेकसम वाला Base58।
- IPFS। वर्ज़न 0 कंटेंट आइडेंटिफ़ायर (CIDv0) किसी SHA-256 मल्टीहैश का Base58 रूप है, इसीलिए ये CID 46 अक्षर लंबे होते हैं और
Qmसे शुरू होते हैं। - Solana। सार्वजनिक कुंजियाँ, अकाउंट एड्रेस और ट्रांज़ैक्शन सिग्नेचर बिना चेकसम के सादे Base58 में लिखे जाते हैं। 32 बाइट की कुंजी आमतौर पर 43 या 44 अक्षरों की बनती है।
- Flickr और XRP Ledger। Flickr के छोटे लिंक Flickr वर्णमाला का उपयोग करते हैं, और XRP एड्रेस Ripple वर्णमाला का, इसीलिए वे
rसे शुरू होते हैं।
Base58 और रॉ बाइट के बीच बदलने के लिए Base58 से हेक्स और हेक्स से Base58 का उपयोग करें। जिन आइडेंटिफ़ायर में केवल अक्षर और अंक होने चाहिए, उनके लिए Base62 से तुलना करें।
Base58 वर्णमालाएँ
| वर्णमाला | अक्षर, क्रम से |
|---|---|
| Bitcoin | 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz |
| Flickr | 123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ |
| Ripple | rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz |
तीनों वर्णमालाएँ वही 58 अक्षर अलग-अलग क्रम में इस्तेमाल करती हैं, इसलिए एक वर्णमाला से एनकोड की गई स्ट्रिंग को दूसरी वर्णमाला से डिकोड करने पर अलग बाइट मिलते हैं, या डिकोडिंग विफल हो जाती है।
कोड में Base58
# Python (pip install base58)
import base58
base58.b58encode(b'hello') # b'Cn8eVZg'
base58.b58decode('Cn8eVZg') # b'hello'
// JavaScript (npm install bs58)
import bs58 from 'bs58';
bs58.encode(new TextEncoder().encode('hello'));
तकनीकी विवरण
| वर्णमाला | 1-9 A-Z a-z (0 O I l के बिना) |
|---|---|
| आउटपुट का आकार | लगभग 137% (बड़ी संख्या का रूपांतरण) |
| पैडिंग | कोई नहीं (शुरुआती शून्य बाइट 1 बन जाते हैं) |
| मानक | Bitcoin Base58 |
| केस-संवेदी | हाँ |
उदाहरण
| इनपुट (UTF-8) | आउटपुट |
|---|---|
Hello, World! | 72k1xXWG59fYdzSNoA |
Base64.is | r1Nm3AS7ZcnN |
你好 | 2xuZUfBKa |
अक्सर पूछे जाने वाले प्रश्न
शुरुआती शून्य बाइट 1 क्यों बन जाते हैं?
1 है। इसीलिए 32 शून्य बाइट एनकोड होकर लगातार 32 बार 1 बन जाते हैं।क्या Base58 केस-संवेदी है?
हाँ। बड़े और छोटे अक्षर अलग-अलग अंक हैं, इसलिए किसी एक अक्षर का केस बदलने से डिकोड किए गए बाइट बदल जाते हैं या स्ट्रिंग अमान्य हो जाती है।