Zo gebruik je het
- Kies Coderen om tekst om te zetten naar Base32hex, of Decoderen om Base32hex terug te zetten naar tekst.
- Laat bij Variant Base32hex geselecteerd. Zet Opvulling uit of kies Kleine letters als je formaat dat vereist.
- Typ of plak je invoer, of open een bestand. Het resultaat wordt bijgewerkt terwijl je typt.
- Kopieer het resultaat of download het als bestand.
Wat is Base32hex?
Base32hex is de "Base 32 Encoding with Extended Hex Alphabet" uit sectie 7 van RFC 4648. Het werkt precies zoals de standaardvariant van Base32: elk teken draagt 5 bits, elke 5 bytes worden 8 tekens en de uitvoer wordt met = aangevuld tot een veelvoud van 8. Alleen het alfabet is anders. In plaats van A-Z 2-7 telt Base32hex verder waar hexadecimaal ophoudt: de cijfers 0 tot en met 9 staan voor 0 tot en met 9, A is 10 en V is 31.
Omdat de twee alfabetten de meeste tekens gemeen hebben, kan een standaard-Base32-decoder een Base32hex-string vaak zonder foutmelding verwerken, maar de bytes die eruit komen zijn dan verkeerd. Decodeer altijd met dezelfde variant als waarmee is gecodeerd.
De sorteervolgorde blijft behouden
Het alfabet staat in oplopende ASCII-volgorde en de waarde van elk teken neemt toe met zijn positie. Daardoor levert het teken voor teken vergelijken van twee Base32hex-strings dezelfde volgorde op als het vergelijken van de onderliggende bytes. RFC 4648 noemt dit als de eigenschap die standaard-Base32 en Base64 missen, en het maakt Base32hex geschikt voor sleutels in gesorteerde opslag, zoals databases en key-value stores.
Houd alle strings in één soort letters en zet de opvulling uit als de invoer verschillende lengtes heeft: het teken = wordt tussen de cijfers en de letters gesorteerd en kan de volgorde verstoren.
Base32hex in NSEC3-records van DNSSEC
NSEC3-records, gedefinieerd in RFC 5155, bewijzen dat een DNS-naam niet bestaat en maken het tegelijk moeilijker om alle namen in de zone op te sommen. Elke naam wordt gehasht met SHA-1, en de hash van 20 bytes wordt geschreven als een Base32hex-label van 32 tekens zonder opvulling, meestal weergegeven in kleine letters. Omdat de codering de volgorde van de hashes behoudt, vormen de gehashte namen een gesorteerde keten. Om een hash in zo'n label om te zetten, plak je hem als hexinvoer, zet je Opvulling uit en kies je Kleine letters. Deze tool voert alleen de coderingsstap uit; hij berekent niet de gezouten, herhaald toegepaste NSEC3-hash.
Base32hex in code
# 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)
Specificatie
| Alfabet | 0-9 A-V |
|---|---|
| Uitvoergrootte | 8 tekens per 5 bytes (160%) |
| Opvulling | = tot een veelvoud van 8 tekens |
| Standaard | RFC 4648, sectie 7 |
| Hoofdlettergevoelig | Nee |
Voorbeelden
| Invoer (UTF-8) | Uitvoer |
|---|---|
Hello, World! | 91IMOR3F5GG5ERRIDHI22=== |
Base64.is | 89GN6P9M6GN6ISO= |
你好 | SIUQ1PD5NK====== |
Veelgestelde vragen
Wat is het verschil tussen Base32 en Base32hex?
A-Z 2-7; Base32hex gebruikt 0-9 A-V, waardoor de sorteervolgorde van de gegevens behouden blijft. De twee zijn niet uitwisselbaar.Is Base32hex hoofdlettergevoelig?
Het alfabet is gedefinieerd in hoofdletters, maar deze decoder accepteert ook invoer in kleine letters. Zet Kleine letters aan als je uitvoer in kleine letters nodig hebt, bijvoorbeeld voor DNS-labels.
Moet ik opvulling gebruiken?
= aan tot een veelvoud van 8 tekens, maar veel formaten, waaronder NSEC3, laten de opvulling weg. De decoder accepteert beide, dus kies wat het ontvangende systeem verwacht.