Do czego służy Base32
Base32 rozwiązuje ten sam podstawowy problem co Base64: zapisuje dowolne bajty przy użyciu małego zestawu drukowalnych znaków, aby przetrwały kanały akceptujące tylko tekst. Tym, co go wyróżnia, jest kształt jego alfabetu. Base32 używa tylko 26 wielkich liter A-Z i cyfr 2-7, łącznie 32 symboli. Celowo pomija 0, 1 i 8 oraz jest niewrażliwy na wielkość liter. To sprawia, że trudno go źle odczytać i bezpiecznie wpisać, podyktować przez telefon lub wydrukować na etykiecie bez mylenia O z 0 czy l z 1.
Ceną tej odporności jest rozmiar. Tam gdzie Base64 pakuje dane w proporcji cztery znaki na trzy bajty, Base32 jest mniej gęsty, więc jego wyjście jest zauważalnie dłuższe dla tego samego wejścia.
Jak działa grupowanie po 5 bitów
Base64 pracuje w grupach po 6 bitów, ponieważ 2⁶ = 64. Base32 pracuje w grupach po 5 bitów, ponieważ 2⁵ = 32. Każdy fragment 5-bitowy to liczba od 0 do 31, a każda wartość odpowiada znakowi alfabetu (A=0 do Z=25, następnie 2=26 do 7=31).
Niewygodne jest to, że 5 nie dzieli 8 równo. Okno 24-bitowe Base64 (3 bajty jako 4 grupy) pasuje czysto; najmniejsze czyste okno Base32 to 40 bitów, czyli 5 bajtów zakodowanych jako 8 znaków. Base32 czyta więc wejście po pięć bajtów na raz i emituje osiem znaków na blok.
Wypełnianie do bloku 8 znaków
Ponieważ naturalny blok to osiem znaków, gdy wejście nie kończy się na granicy 5 bajtów, koder wypełnia ostatni blok znakami = do ośmiu znaków. Tylko niektóre pozostałe rozmiary są prawidłowe: ostatni blok o długości 2, 4, 5 lub 7 przed wypełnieniem odpowiada całkowitej liczbie bajtów, podczas gdy długości 1, 3 i 6 nie mogą i sygnalizują zniekształcony ciąg. Jak w Base64, = nie jest danymi; przywraca jedynie długość bloku, aby dekoder mógł odzyskać dokładne pierwotne bajty.
Weź wejście foobar. Jego kodowanie Base32 to MZXW6YTBOI======: osiem znaków danych, po których następuje sześć znaków wypełnienia uzupełniających drugi blok. Zdekoduj je, a sześć pierwotnych bajtów wraca.
Gdzie się z nim spotkasz
Base32 pojawia się tam, gdzie osoba bezpośrednio obsługuje zakodowaną wartość. Sekrety dwuskładnikowe dla i są udostępniane jako ciągi Base32, dlatego klucz konfiguracyjny aplikacji uwierzytelniającej składa się w całości z wielkich liter i cyfr od 2 do 7. Adresy onion w Torze to klucze publiczne zakodowane w Base32. Niektóre rekordy DNS i systemy synchronizacji plików używają go z tego samego powodu: wartość może zostać odczytana na głos, wpisana ręcznie lub przechowywana bez rozróżniania wielkości liter, a Base32 toleruje wszystkie trzy.
Gdy ciąg składa się w całości z wielkich liter A-Z i 2-7, być może kończąc się na =, Base32 to dobre przypuszczenie.
Wypróbuj
Wybierz Base32 w narzędziu codec, aby zakodować tekst do Base32 lub zdekodować ciąg Base32, wszystko w Twojej przeglądarce. Toleruje wejście małymi literami i brakujące wypełnienie oraz oznacza wynik, który jest binarny zamiast czytelnego tekstu.