Jak używać
- Wybierz „Koduj”, aby zamienić tekst na Base32, lub „Dekoduj”, aby zamienić Base32 z powrotem na tekst.
- Wybierz „Wariant”. Domyślnie ustawiony jest RFC 4648, którego używają klucze TOTP i większość bibliotek.
- Wpisz lub wklej dane wejściowe albo otwórz plik. Wynik aktualizuje się na bieżąco podczas pisania.
- 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 linkuotpauth://) 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
| Wariant | Alfabet | Typowe zastosowanie |
|---|---|---|
| RFC 4648 | A-Z 2-7 | Klucze TOTP, zastosowania ogólne |
| Base32hex | 0-9 A-V | Kolejność sortowania zgodna z surowymi bajtami, DNSSEC NSEC3 |
| Crockford | 0-9 A-Z bez I, L, O, U | Czytelne identyfikatory, ULID |
| z-base-32 | mał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
| Alfabet | A-Z 2-7 |
|---|---|
| Rozmiar wyniku | 8 znaków na 5 bajtów (160%) |
| Dopełnienie | = do wielokrotności 8 znaków |
| Standard | RFC 4648, sekcja 6 |
| Rozróżnia wielkość liter | Nie |
Przykłady
| Wejście (UTF-8) | Wyjście |
|---|---|
Hello, World! | JBSWY3DPFQQFO33SNRSCC=== |
Base64.is | IJQXGZJWGQXGS4Y= |
你好 | 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.