Jak używać
- Wybierz „Koduj”, aby zamienić tekst na Base32hex, lub „Dekoduj”, aby zamienić Base32hex z powrotem na tekst.
- Pozostaw wybrany wariant Base32hex. Wyłącz „Dopełnienie” lub włącz „Małe litery”, jeśli wymaga tego dany format.
- 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 Base32hex?
Base32hex to „Base 32 Encoding with Extended Hex Alphabet”, czyli kodowanie Base32 z rozszerzonym alfabetem szesnastkowym, zdefiniowane w sekcji 7 dokumentu RFC 4648. Działa dokładnie tak jak standardowy Base32: każdy znak niesie 5 bitów, każde 5 bajtów daje 8 znaków, a wynik jest dopełniany znakami = do wielokrotności 8. Różni się tylko alfabet. Zamiast A-Z 2-7 Base32hex kontynuuje liczenie tam, gdzie kończy się system szesnastkowy: cyfry od 0 do 9 oznaczają wartości od 0 do 9, A to 10, a V to 31.
Ponieważ oba alfabety mają większość znaków wspólnych, ciąg Base32hex często da się podać standardowemu dekoderowi Base32 bez żadnego błędu, ale otrzymane bajty będą nieprawidłowe. Zawsze dekoduj tym samym wariantem, którego użyto do kodowania.
Kolejność sortowania zostaje zachowana
Alfabet jest ułożony w rosnącej kolejności ASCII, a wartość każdego znaku rośnie wraz z jego pozycją. W rezultacie porównywanie dwóch ciągów Base32hex znak po znaku daje tę samą kolejność co porównywanie bajtów, które kodują. RFC 4648 wskazuje to jako właściwość, której brakuje standardowemu Base32 i Base64. Dzięki niej Base32hex dobrze sprawdza się jako format kluczy w posortowanych magazynach danych, takich jak bazy danych i magazyny klucz-wartość.
Zapisuj wszystkie ciągi literami tej samej wielkości i wyłącz dopełnienie, gdy dane wejściowe mają różną długość: znak = sortuje się między cyframi a literami i może zaburzyć kolejność.
Base32hex w rekordach DNSSEC NSEC3
Rekordy NSEC3, zdefiniowane w RFC 5155, dowodzą, że dana nazwa DNS nie istnieje, a jednocześnie utrudniają wyliczenie wszystkich nazw w strefie. Każda nazwa jest haszowana algorytmem SHA-1, a 20-bajtowy skrót jest zapisywany jako 32-znakowa etykieta Base32hex bez dopełnienia, zwykle wyświetlana małymi literami. Ponieważ kodowanie zachowuje kolejność skrótów, zahaszowane nazwy tworzą posortowany łańcuch. Aby zamienić skrót na taką etykietę, wklej go jako dane wejściowe w hex, wyłącz „Dopełnienie” i wybierz „Małe litery”. To narzędzie wykonuje tylko krok kodowania; nie oblicza solonego, wielokrotnie iterowanego skrótu NSEC3.
Base32hex w kodzie
# Python 3.10+
import base64
base64.b32hexencode(b'foobar') # b'CPNMUOJ1E8======'
base64.b32hexdecode('CPNMUOJ1E8======') # b'foobar'
// Go (import "encoding/base32")
base32.HexEncoding.EncodeToString(data)
base32.HexEncoding.WithPadding(base32.NoPadding).EncodeToString(data)
Specyfikacja
| Alfabet | 0-9 A-V |
|---|---|
| Rozmiar wyniku | 8 znaków na 5 bajtów (160%) |
| Dopełnienie | = do wielokrotności 8 znaków |
| Standard | RFC 4648, sekcja 7 |
| Rozróżnia wielkość liter | Nie |
Przykłady
| Wejście (UTF-8) | Wyjście |
|---|---|
Hello, World! | 91IMOR3F5GG5ERRIDHI22=== |
Base64.is | 89GN6P9M6GN6ISO= |
你好 | SIUQ1PD5NK====== |
Najczęściej zadawane pytania
Czym różni się Base32 od Base32hex?
A-Z 2-7, a Base32hex alfabetu 0-9 A-V, który zachowuje kolejność sortowania danych. Nie można ich stosować zamiennie.Czy Base32hex rozróżnia wielkość liter?
Alfabet 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, na przykład dla etykiet DNS, włącz opcję „Małe litery”.
Czy używać dopełnienia?
= do wielokrotności 8 znaków, ale wiele formatów, w tym NSEC3, je pomija. Dekoder akceptuje obie formy, więc wybierz to, czego oczekuje system odbiorcy.