Začněte požadavkem příjemce
Nejdříve zjistěte formát vyžadovaný cílovým systémem, nikoli ten, který zní nejúsporněji. Standardní Base64 používá písmena, číslice, plus a lomítko; některá prostředí požadují variantu Base64URL. Base32 používá velká písmena a číslice od 2 do 7. Base58 s bitcoinovou abecedou vynechává znaky, které se při ručním přepisu snadno pletou, například nulu, velké O, velké I a malé l. Každá abeceda může vyjádřit stejné bajty, ale příjemce jedné nemusí přijmout jinou. Žádná nešifruje obsah: pomocí odpovídajícího dekodéru lze původní bajty obnovit.
Jeden vstup, tři podoby
Vezměme text ASCII Man. Jeho bajty UTF-8 mají hexadecimální hodnoty 4D 61 6E. Standardní Base64 je zapíše jako TWFu. Base32 podle RFC 4648 vrátí JVQW4=== včetně výplně do osmiznakového bloku. Propojený nástroj Base58 zapíše tytéž bajty bitcoinovou abecedou bez doplňovacích znaků rovná se. Výstupy vypadají jinak, protože abecedy rozdělují proud bitů nebo hodnotu čísla odlišně; vstupní text se nemění. Zadejte Man do vloženého kodéru Base32 a otevřete odpovídající dekodér. Stejný test proveďte s Base64 a Base58 a porovnejte až obnovený text.
- UTF-8: Man → 4D 61 6E
- Base64: TWFu · Base32: JVQW4===
- Base58: jiná abeceda; dekódovat zpět na Man
Výplň, varianty a kontrolní součet
Specifikace Base64 a Base32 popisují výplň pomocí znaků rovná se. Některé aplikace ji záměrně vynechávají, jiné ji vyžadují; řiďte se přesným požadavkem příjemce. Base58 v této implementaci takovou výplň nemá. Nezaměňujte obyčejné Base58 s bitcoinovým Base58Check: adresa obsahuje verzi a kontrolní součet ještě před zápisem Base58. Převodník MultiVerto kóduje text UTF-8, ale nevytváří bitcoinové adresy ani neověřuje jejich kontrolní součet. Také standardní Base64 a Base64URL se liší znaky důležitými pro URL. Nesprávná varianta může selhat, přestože výchozí bajty byly správné.
Porovnávejte bajty, ne písmena
Text se nejprve změní na bajty podle znakového kódování. Nástroje Base32 a Base58 v MultiVerto používají UTF-8, takže písmeno s diakritikou může zabírat více bajtů. Při odhadu velikosti počítejte bajty místo viditelných znaků. Výsledek změní také náhodná mezera ve vstupu. Pokud se dva výstupy neshodují, zapište původní text, bajty UTF-8, název abecedy, pravidlo výplně a očekávaný dekodér. Výstup dekódujte a porovnejte obnovený text. Přenášíte-li libovolný binární soubor, ověřte, že systém zachová surové bajty; textový převodník není obecným protokolem pro soubory.
Dodržte smlouvu rozhraní
U pole MIME, tokenu API, obsahu QR kódu nebo ručně zapisovaného identifikátoru si před výběrem přečtěte příslušnou specifikaci. Base64 je běžné při strojové výměně; Base32 může vyhovovat omezené sadě znaků; Base58 se používá v některých systémech určených k přepisu lidmi. Jde o příklady, nikoli univerzální pravidla. Samotné kódování nepřidává integritu ani ověření původu: pokud potřebujete odhalit změny, okolní formát musí mít kontrolní součet, podpis nebo autentizovanou ochranu. V integraci si ponechte krátký testovací vstup, například Man, a otestujte kódování i dekódování na hranici systémů.
Při kopírování mezi aplikacemi zkontrolujte, zda systém nemění velikost písmen, nevkládá konce řádků a neodstraňuje doplňovací znaky. Taková úprava může porušit správný řetězec, i když samotný převodník pracuje bez chyby. Porovnejte výsledek s krátkým příkladem, který zveřejňuje konkrétní přijímající protokol.