Come si usa
- Scegli Codifica per trasformare il testo in Base32hex, oppure Decodifica per riportare il Base32hex in testo.
- Lascia selezionata la variante Base32hex. Disattiva il Padding o passa a Minuscole se il tuo formato lo richiede.
- Digita o incolla l’input, oppure apri un file. Il risultato si aggiorna mentre scrivi.
- Copia il risultato o scaricalo come file.
Che cos’è Base32hex?
Base32hex è la "Base 32 Encoding with Extended Hex Alphabet", cioè la codifica Base32 con alfabeto esadecimale esteso, definita nella sezione 7 della RFC 4648. Funziona esattamente come il Base32 standard: ogni carattere trasporta 5 bit, ogni 5 byte diventano 8 caratteri e l’output viene completato con = fino a un multiplo di 8. Cambia solo l’alfabeto. Al posto di A-Z 2-7, Base32hex continua a contare da dove si ferma l’esadecimale: le cifre da 0 a 9 valgono da 0 a 9, A vale 10 e V vale 31.
Poiché i due alfabeti hanno in comune la maggior parte dei caratteri, spesso una stringa Base32hex può essere passata a un decodificatore Base32 standard senza errori, ma i byte che ne escono sono sbagliati. Decodifica sempre con la stessa variante usata per la codifica.
L’ordinamento viene mantenuto
L’alfabeto segue l’ordine ASCII crescente e il valore di ogni carattere aumenta con la sua posizione. Di conseguenza, confrontare due stringhe Base32hex carattere per carattere dà lo stesso ordine che si ottiene confrontando i byte sottostanti. La RFC 4648 sottolinea che è proprio questa la proprietà che manca al Base32 standard e a Base64, e grazie a essa Base32hex si presta bene come chiave in archivi ordinati come database e key-value store.
Scrivi tutte le stringhe con lo stesso tipo di lettere e disattiva il padding quando gli input hanno lunghezze diverse: il segno = si colloca tra le cifre e le lettere e può alterare l’ordine.
Base32hex nei record DNSSEC NSEC3
I record NSEC3, definiti nella RFC 5155, dimostrano che un nome DNS non esiste e allo stesso tempo rendono più difficile elencare tutti i nomi della zona. Ogni nome viene sottoposto a hash con SHA-1, e l’hash di 20 byte viene scritto come etichetta Base32hex di 32 caratteri senza padding, di solito mostrata in minuscolo. Poiché la codifica mantiene l’ordine degli hash, i nomi sottoposti a hash formano una catena ordinata. Per trasformare un hash in un’etichetta di questo tipo, incollalo come input esadecimale, disattiva il Padding e scegli Minuscole. Questo strumento esegue solo la fase di codifica: non calcola l’hash NSEC3 con salt e iterazioni.
Base32hex nel codice
# Python 3.10+
import base64
base64.b32hexencode(b'foobar') # b'CPNMUOJ1E8======'
base64.b32hexdecode('CPNMUOJ1E8======') # b'foobar'
// Go (pacchetto "encoding/base32")
base32.HexEncoding.EncodeToString(data)
base32.HexEncoding.WithPadding(base32.NoPadding).EncodeToString(data)
Specifiche
| Alfabeto | 0-9 A-V |
|---|---|
| Dimensione dell’output | 8 caratteri ogni 5 byte (160%) |
| Padding | = fino a un multiplo di 8 caratteri |
| Standard | RFC 4648, sezione 7 |
| Distingue maiuscole/minuscole | No |
Esempi
| Input (UTF-8) | Output |
|---|---|
Hello, World! | 91IMOR3F5GG5ERRIDHI22=== |
Base64.is | 89GN6P9M6GN6ISO= |
你好 | SIUQ1PD5NK====== |
Domande frequenti
Qual è la differenza tra Base32 e Base32hex?
A-Z 2-7; Base32hex usa 0-9 A-V, che mantiene l’ordinamento dei dati. I due non sono intercambiabili.Base32hex distingue tra maiuscole e minuscole?
L’alfabeto è definito in maiuscolo, ma questo decodificatore accetta anche input in minuscolo. Attiva Minuscole se ti serve un output in minuscolo, per esempio per le etichette DNS.
Devo usare il padding?
= fino a un multiplo di 8 caratteri, ma molti formati, tra cui NSEC3, lo omettono. Il decodificatore accetta entrambe le forme, quindi scegli quella che si aspetta il sistema di destinazione.