Text a kód / Návody

Base64, Base32 alebo Base58: ktorú abecedu použiť?

Všetky tri postupy zapisujú bajty tlačiteľnými znakmi. Správny výber však určuje rozhranie, ktoré výsledok prijíma.

Začnite požiadavkou príjemcu

Najprv zistite formát požadovaný cieľovým systémom, nie ten, ktorý znie najúspornejšie. Štandardné Base64 používa písmená, číslice, plus a lomku; niektoré prostredia vyžadujú variant Base64URL. Base32 používa veľké písmená a číslice od 2 do 7. Base58 s bitcoinovou abecedou vynecháva znaky, ktoré sa pri ručnom prepise ľahko pletú, napríklad nulu, veľké O, veľké I a malé l. Každá abeceda môže vyjadriť rovnaké bajty, ale príjemca jednej nemusí prijať druhú. Ani jedna nešifruje obsah: s vhodným dekodérom sa pôvodné bajty dajú obnoviť.

Jeden vstup, tri zápisy

Vezmime text ASCII Man. Jeho bajty UTF-8 majú hexadecimálne hodnoty 4D 61 6E. Štandardné Base64 ich zapíše ako TWFu. Base32 podľa RFC 4648 vráti JVQW4=== vrátane výplne do osemznakového bloku. Prepojený nástroj Base58 zapíše tie isté bajty bitcoinovou abecedou bez doplňovacích znakov rovná sa. Výstupy vyzerajú inak, lebo abecedy rozdeľujú prúd bitov alebo hodnotu čísla odlišne; vstupný text sa nemení. Zadajte Man do vloženého kodéra Base32 a otvorte príslušný dekodér. Rovnaký test skúste s Base64 a Base58 a porovnajte až obnovený text.

Tie isté tri bajty prejdú tromi tlačiteľnými abecedami.
  1. UTF-8: Man → 4D 61 6E
  2. Base64: TWFu · Base32: JVQW4===
  3. Base58: iná abeceda; dekódovať späť na Man

Výplň, varianty a kontrolný súčet

Špecifikácie Base64 a Base32 opisujú výplň pomocou znakov rovná sa. Niektoré aplikácie ju zámerne vynechávajú, iné ju vyžadujú; riaďte sa presnou požiadavkou príjemcu. Base58 v tejto implementácii takúto výplň nemá. Nezamieňajte si obyčajné Base58 s bitcoinovým Base58Check: adresa obsahuje verziu a kontrolný súčet ešte pred zápisom Base58. Prevodník MultiVerto kóduje text UTF-8, ale nevytvára bitcoinové adresy ani neoveruje ich kontrolný súčet. Aj štandardné Base64 a Base64URL sa líšia znakmi dôležitými v URL. Nesprávny variant môže zlyhať napriek tomu, že východiskové bajty boli správne.

Porovnávajte bajty, nie písmená

Text sa najskôr zmení na bajty podľa znakového kódovania. Nástroje Base32 a Base58 v MultiVerto používajú UTF-8, preto písmeno s diakritikou môže zaberať viac bajtov. Pri odhade veľkosti počítajte bajty namiesto viditeľných znakov. Výsledok zmení aj náhodná medzera vo vstupe. Ak sa dva výstupy nezhodujú, zapíšte si pôvodný text, bajty UTF-8, názov abecedy, pravidlo výplne a očakávaný dekodér. Výstup dekódujte a porovnajte obnovený text. Ak prenášate ľubovoľný binárny súbor, overte, že systém zachová surové bajty; textový konvertor nie je všeobecným protokolom na súbory.

Dodržte zmluvu rozhrania

Pri poli MIME, tokene API, obsahu QR kódu alebo ručne zapisovanom identifikátore si pred výberom prečítajte príslušnú špecifikáciu. Base64 je bežné pri strojovej výmene; Base32 môže vyhovovať obmedzenej sade znakov; Base58 sa používa v niektorých systémoch určených na prepis ľuďmi. Ide o príklady, nie univerzálne pravidlá. Samotné kódovanie nepridáva integritu ani overenie pôvodu: ak potrebujete odhaliť zmeny, okolitý formát musí mať kontrolný súčet, podpis alebo autentifikovanú ochranu. V integrácii si ponechajte krátky skúšobný vstup, napríklad Man, a otestujte kódovanie aj dekódovanie na hranici systémov.

Pri kopírovaní medzi aplikáciami skontrolujte, či systém nemení veľkosť písmen, nevkladá konce riadkov a neodstraňuje doplňovacie znaky. Takáto úprava môže porušiť správny reťazec aj vtedy, keď samotný prevodník pracuje bez chyby. Porovnajte výsledok s krátkym príkladom, ktorý publikuje konkrétny prijímajúci protokol.

Vyskúšať konvertor

Zakódujte Man ako Base32 a overte výsledok zodpovedajúcim dekodérom.

Base32 podľa RFC 4648 zoskupuje bity UTF-8 do päťbitových symbolov A–Z a 2–7. Preveďte údaje lokálne v prehliadači.

Otvoriť celý konvertor

Ďalšie návody

Návody na konverzie

Prezrieť návody