Base32 rozwiązuje bardzo konkretny problem: gdy ktoś musi odczytać kod na głos, podyktować go przez telefon albo przepisać ręcznie, alfabet złożony z 32 znaków generuje znacznie mniej pomyłek niż 64 znaki Base64.
Klasyczny przypadek: konfiguracja 2FA bez kodu QR
Gdy aplikacja typu Google Authenticator nie może zeskanować kodu QR, pokazuje zamiast tego "klucz konfiguracyjny" do ręcznego wpisania — ten klucz jest zakodowany w Base32, nie w Base64. Standard TOTP wymaga tego celowo, bo format ma być odporny na błędy przy ręcznym przepisywaniu, nawet gdy ktoś odczytuje go znak po znaku przez telefon.
Alfabet zaprojektowany pod dyktowanie
Base32 całkowicie pomija 0, 1, 8, 9 oraz litery O, I, L — czyli dokładnie te znaki, które najłatwiej pomylić przy czytaniu na głos lub na słabej jakości ekranie. W polskich rozmowach telefonicznych odróżnienie litery „O” od cyfry zero bywa niejednoznaczne bez alfabetu fonetycznego; Base32 usuwa ten problem już na poziomie zestawu znaków, bez potrzeby dodatkowych słów pomocniczych.
Gdzie Base32 pojawia się w praktyce
- Adresy .onion w sieci Tor — 56-znakowa subdomena to zakodowany w Base32 klucz publiczny Ed25519.
- Etykiety DNS i subdomeny, które zgodnie ze specyfikacją nie rozróżniają wielkości liter.
- Kody polecającego lub rabatowe wydrukowane na papierowym paragonie, które klient musi ręcznie przepisać na stronie.
Cena czytelności: dłuższe ciągi znaków
Mniejszy alfabet oznacza, że każdy bajt wymaga więcej znaków do zapisania — wynik jest o około 60% dłuższy niż w Base64. Dla 20-bajtowego sekretu ta różnica jest nieistotna, ale dla pliku o wielkości kilku megabajtów Base32 przestaje mieć sens wobec Base64.
Base32 i Base32hex nie są wymienne
RFC 4648 definiuje też Base32hex, który zamiast A–Z2–7 używa alfabetu 0–9A–V i zachowuje taką samą kolejność sortowania ciągów jak kolejność oryginalnych bajtów — właściwość istotną dla niektórych baz danych. Ciąg zakodowany jednym wariantem nie zdekoduje się poprawnie drugim, więc warto sprawdzić, którego wariantu faktycznie oczekuje dany system, zanim zacznie się dekodowanie.