Koder i dekoder Base32

Zamień tekst, bajty szesnastkowe lub pliki na Base32 i z powrotem. Wybierz alfabet RFC 4648, Base32hex, Crockford lub z-base-32 oraz ustaw dopełnienie i wielkość liter.

Działa w całości w przeglądarce. Nic nie jest wysyłane.

Jak używać

  1. Wybierz „Koduj”, aby zamienić tekst na Base32, lub „Dekoduj”, aby zamienić Base32 z powrotem na tekst.
  2. Wybierz „Wariant”. Domyślnie ustawiony jest RFC 4648, którego używają klucze TOTP i większość bibliotek.
  3. Wpisz lub wklej dane wejściowe albo otwórz plik. Wynik aktualizuje się na bieżąco podczas pisania.
  4. Skopiuj wynik lub pobierz go jako plik.

Czym jest Base32?

Base32 przedstawia dane binarne za pomocą 32 drukowalnych znaków. Każdy znak niesie 5 bitów, więc każde 5 bajtów wejściowych daje 8 znaków wyjściowych. Wynik jest o około 60% większy niż dane wejściowe, czyli narzut jest większy niż w Base64, ale alfabet nie zawiera małych liter ani łatwych do pomylenia symboli.

Standardowy alfabet zdefiniowany w RFC 4648 składa się z liter A-Z i cyfr 2-7. Cyfry 0, 1, 8 i 9 pominięto, aby nie można ich było pomylić z literami O, I i B. Gdy długość danych wejściowych nie jest wielokrotnością 5 bajtów, wynik jest dopełniany znakami = do wielokrotności 8 znaków.

Gdzie używa się Base32

  • Uwierzytelnianie dwuskładnikowe. Klucze TOTP i HOTP w aplikacjach uwierzytelniających (wartość secret= w linku otpauth://) są ciągami Base32.
  • Systemy nierozróżniające wielkości liter. Ponieważ alfabet używa liter tylko jednej wielkości, Base32 bez szkody przechodzi przez systemy plików, etykiety DNS i adresy e-mail, które ignorują wielkość liter.
  • Kody wpisywane ręcznie. Klucze licencyjne, adresy onion i krótkie identyfikatory używają Base32, ponieważ łatwiej je przeczytać na głos i przepisać.

Jeśli rozmiar jest ważniejszy niż czytelność, bardziej zwarty jest Base64. Jeśli potrzebne są krótkie identyfikatory bez mylących znaków, porównaj Crockford Base32 i Base58.

Warianty Base32

WariantAlfabetTypowe zastosowanie
RFC 4648A-Z 2-7Klucze TOTP, zastosowania ogólne
Base32hex0-9 A-VKolejność sortowania zgodna z surowymi bajtami, DNSSEC NSEC3
Crockford0-9 A-Z bez I, L, O, UCzytelne identyfikatory, ULID
z-base-32małe litery, zmieniona kolejnośćKlucze przyjazne dla ludzi, OpenPGP WKD, ZRTP

Base32 w kodzie

# Python
import base64
base64.b32encode(b'hello')        # kodowanie
base64.b32decode('NBSWY3DP')      # dekodowanie

// Node.js nie ma wbudowanego Base32; użyj pakietu, np. "hi-base32"
// Go (import "encoding/base32")
base32.StdEncoding.EncodeToString(data)

Specyfikacja

AlfabetA-Z 2-7
Rozmiar wyniku8 znaków na 5 bajtów (160%)
Dopełnienie= do wielokrotności 8 znaków
StandardRFC 4648, sekcja 6
Rozróżnia wielkość literNie

Przykłady

Wejście (UTF-8)Wyjście
Hello, World!JBSWY3DPFQQFO33SNRSCC===
Base64.isIJQXGZJWGQXGS4Y=
你好4S62BZNFXU======

Najczęściej zadawane pytania

Czy Base32 rozróżnia wielkość liter?

Alfabet RFC 4648 jest zdefiniowany wielkimi literami, ale ten dekoder akceptuje również dane wejściowe zapisane małymi literami. Jeśli potrzebny jest wynik małymi literami, użyj opcji „Małe litery”.

Dlaczego mój ciąg Base32 kończy się znakami =?

Znaki równości to dopełnienie, które uzupełnia ostatni blok do 8 znaków. Wiele systemów, w tym większość aplikacji TOTP, akceptuje Base32 bez dopełnienia. Wyłącz opcję „Dopełnienie”, aby je usunąć.

O ile Base32 jest większy od oryginalnych danych?

Każde 5 bajtów daje 8 znaków, więc wynik w Base32 jest około 1,6 raza większy niż dane wejściowe. W przypadku Base64 jest to około 1,33 raza.

Czy za pomocą tego narzędzia można zdekodować klucz TOTP?

Tak. Wklej klucz na karcie „Dekoduj” i ustaw „Wyjście jako” na „Hex”, aby zobaczyć surowe bajty klucza. Spacje w kluczu są ignorowane.