Base32hex-koder og -dekoder

Konverter tekst, hex-byte eller filer til Base32 med det utvidede hex-alfabetet og tilbake. Styr utfylling og store eller små bokstaver, for eksempel for å lage etiketter i NSEC3-stil.

Kjører helt i nettleseren din. Ingenting lastes opp.

Slik bruker du verktøyet

  1. Velg Kode for å gjøre tekst om til Base32hex, eller Dekode for å gjøre Base32hex om til tekst igjen.
  2. La varianten Base32hex være valgt. Slå av Utfylling eller bytt til Små bokstaver hvis formatet ditt krever det.
  3. Skriv eller lim inn inndataene, eller åpne en fil. Resultatet oppdateres mens du skriver.
  4. Kopier resultatet eller last det ned som en fil.

Hva er Base32hex?

Base32hex er «Base 32 Encoding with Extended Hex Alphabet», definert i avsnitt 7 i RFC 4648. Den fungerer akkurat som standard Base32: Hvert tegn bærer 5 bit, hver blokk på 5 byte blir 8 tegn, og utdataene fylles ut med = til et multiplum av 8. Bare alfabetet er annerledes. I stedet for A-Z 2-7 fortsetter Base32hex å telle der heksadesimalt stopper: Sifrene 0 til 9 står for 0 til 9, A er 10 og V er 31.

Fordi de to alfabetene har de fleste tegnene felles, kan en Base32hex-streng ofte mates inn i en vanlig Base32-dekoder uten at det oppstår feil, men bytene som kommer ut, blir feil. Dekod alltid med den samme varianten som ble brukt til kodingen.

Sorteringsrekkefølgen bevares

Alfabetet står i stigende ASCII-rekkefølge, og verdien til hvert tegn øker med posisjonen. Når du sammenligner to Base32hex-strenger tegn for tegn, får du derfor samme rekkefølge som når du sammenligner de underliggende bytene. RFC 4648 påpeker at dette er en egenskap som standard Base32 og Base64 mangler, og det gjør Base32hex godt egnet for nøkler i sortert lagring, som databaser og nøkkel-verdi-lagre.

Hold alle strengene med samme bokstavstørrelse, og slå av utfylling når inndataene har ulik lengde: Tegnet = sorteres mellom sifrene og bokstavene og kan ødelegge rekkefølgen.

Base32hex i DNSSEC NSEC3

NSEC3-poster, definert i RFC 5155, beviser at et DNS-navn ikke finnes, samtidig som det blir vanskeligere å liste opp alle navnene i sonen. Hvert navn hashes med SHA-1, og hashen på 20 byte skrives som en Base32hex-etikett på 32 tegn uten utfylling, vanligvis vist med små bokstaver. Fordi kodingen beholder rekkefølgen til hashene, danner de hashede navnene en sortert kjede. For å gjøre en hash om til en slik etikett limer du den inn som hex-inndata, slår av Utfylling og velger Små bokstaver. Dette verktøyet utfører bare kodingstrinnet; det beregner ikke den saltede, itererte NSEC3-hashen.

Base32hex i kode

# 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)

Spesifikasjon

Alfabet0-9 A-V
Utdatastørrelse8 tegn per 5 byte (160 %)
UtfyllingMed = til et multiplum av 8 tegn
StandardRFC 4648, avsnitt 7
Skiller store og små bokstaverNei

Eksempler

Inndata (UTF-8)Utdata
Hello, World!91IMOR3F5GG5ERRIDHI22===
Base64.is89GN6P9M6GN6ISO=
你好SIUQ1PD5NK======

Ofte stilte spørsmål

Hva er forskjellen mellom Base32 og Base32hex?
Begge bruker 5 bit per tegn og de samme reglene for utfylling. Standard Base32 bruker A-Z 2-7; Base32hex bruker 0-9 A-V, som bevarer sorteringsrekkefølgen til dataene. De to kan ikke brukes om hverandre.
Skiller Base32hex mellom store og små bokstaver?

Alfabetet er definert med store bokstaver, men denne dekoderen godtar også inndata med små bokstaver. Slå på Små bokstaver hvis du trenger utdata med små bokstaver, for eksempel til DNS-navn.

Bør jeg bruke utfylling?
RFC 4648 fyller ut med = til et multiplum av 8 tegn, men mange formater, deriblant NSEC3, utelater den. Dekoderen godtar begge deler, så velg det mottakersystemet forventer.
Er en Base32hex-streng det samme som heksadesimalt?
Nei. En Base32hex-streng som tilfeldigvis bare inneholder 0-9 og A-F, ser ut som hex, men hvert tegn bærer 5 bit i stedet for 4. For å arbeide med vanlig hex bruker du Base16-verktøyet.