Så använder du verktyget
- Välj Koda för att göra om text till Base32hex, eller Avkoda för att göra om Base32hex till text.
- Behåll varianten Base32hex. Stäng av utfyllnad eller byt till gemener om ditt format kräver det.
- Skriv eller klistra in indatan, eller öppna en fil. Resultatet uppdateras medan du skriver.
- Kopiera resultatet eller ladda ned det som en fil.
Vad är Base32hex?
Base32hex är "Base 32 Encoding with Extended Hex Alphabet", som definieras i avsnitt 7 i RFC 4648. Den fungerar precis som vanlig Base32: varje tecken bär 5 bitar, varje grupp om 5 byte blir 8 tecken och utdatan fylls ut med = till en multipel av 8. Det enda som skiljer är alfabetet. I stället för A-Z 2-7 fortsätter Base32hex att räkna där det hexadecimala systemet slutar: siffrorna 0 till 9 står för 0 till 9, A är 10 och V är 31.
Eftersom de två alfabeten har de flesta tecknen gemensamma kan en Base32hex-sträng ofta matas in i en vanlig Base32-avkodare utan att något fel uppstår, men bytena som kommer ut blir fel. Avkoda alltid med samma variant som användes vid kodningen.
Sorteringsordningen bevaras
Alfabetet står i stigande ASCII-ordning, och varje teckens värde ökar med dess position. Därför ger en jämförelse av två Base32hex-strängar tecken för tecken samma ordning som en jämförelse av de underliggande bytena. RFC 4648 lyfter fram detta som den egenskap som vanlig Base32 och Base64 saknar, och den gör Base32hex väl lämpad för nycklar i sorterad lagring som databaser och nyckel-värde-lager.
Håll alla strängar i samma skiftläge, och stäng av utfyllnad när indata har olika längd: tecknet = sorteras mellan siffrorna och bokstäverna och kan bryta ordningen.
Base32hex i DNSSEC NSEC3
NSEC3-poster, som definieras i RFC 5155, bevisar att ett DNS-namn inte finns och gör det samtidigt svårare att lista alla namn i zonen. Varje namn hashas med SHA-1, och det 20 byte långa hashvärdet skrivs som en Base32hex-etikett på 32 tecken utan utfyllnad, oftast visad med gemener. Eftersom kodningen behåller hashvärdenas ordning bildar de hashade namnen en sorterad kedja. För att göra om ett hashvärde till en sådan etikett klistrar du in det som hexindata, stänger av utfyllnad och väljer Gemener. Verktyget utför bara kodningssteget; det beräknar inte den saltade, itererade NSEC3-hashen.
Base32hex i programkod
# 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)
Specifikation
| Alfabet | 0-9 A-V |
|---|---|
| Utdatastorlek | 8 tecken per 5 byte (160 %) |
| Utfyllnad | = fyller ut till en multipel av 8 tecken |
| Standard | RFC 4648 avsnitt 7 |
| Skiftlägeskänslig | Nej |
Exempel
| Indata (UTF-8) | Utdata |
|---|---|
Hello, World! | 91IMOR3F5GG5ERRIDHI22=== |
Base64.is | 89GN6P9M6GN6ISO= |
你好 | SIUQ1PD5NK====== |
Vanliga frågor
Vad är skillnaden mellan Base32 och Base32hex?
A-Z 2-7; Base32hex använder 0-9 A-V, vilket behåller datans sorteringsordning. De två kan inte bytas mot varandra.Är Base32hex skiftlägeskänslig?
Alfabetet är definierat med versaler, men den här avkodaren accepterar även gemener. Slå på Gemener om du behöver utdata med gemener, till exempel för DNS-etiketter.
Ska jag använda utfyllnad?
= till en multipel av 8 tecken, men många format, däribland NSEC3, utelämnar den. Avkodaren accepterar båda, så välj det som det mottagande systemet förväntar sig.