Sådan bruger du værktøjet
- Vælg Kod for at gøre tekst til Base32hex, eller Afkod for at gøre Base32hex til tekst igen.
- Behold varianten Base32hex. Slå Udfyldning fra, eller skift til Små bogstaver, hvis dit format kræver det.
- Skriv eller indsæt dit input, eller åbn en fil. Resultatet opdateres, mens du skriver.
- Kopiér resultatet, eller download det som en fil.
Hvad er Base32hex?
Base32hex er "Base 32 Encoding with Extended Hex Alphabet", som er defineret i afsnit 7 i RFC 4648. Den fungerer præcis som standardudgaven af Base32: Hvert tegn bærer 5 bit, hver gruppe på 5 bytes bliver til 8 tegn, og outputtet udfyldes med = til et multiplum af 8. Kun alfabetet er anderledes. I stedet for A-Z 2-7 fortsætter Base32hex med at tælle, hvor hexadecimal stopper: Cifrene 0 til 9 står for 0 til 9, A er 10, og V er 31.
Fordi de to alfabeter har de fleste tegn til fælles, kan en Base32hex-streng ofte gives til en standard-Base32-dekoder uden fejl, men de bytes, der kommer ud, er forkerte. Afkod altid med den samme variant, som blev brugt til kodningen.
Sorteringsrækkefølgen bevares
Alfabetet står i stigende ASCII-rækkefølge, og hvert tegns værdi vokser med dets position. Derfor giver en sammenligning af to Base32hex-strenge tegn for tegn den samme rækkefølge som en sammenligning af de underliggende bytes. RFC 4648 fremhæver netop dette som den egenskab, standard-Base32 og Base64 mangler, og det gør Base32hex velegnet til nøgler i sorteret lagring som databaser og key-value-stores.
Hold alle strenge i samme slags bogstaver, og slå udfyldning fra, når inputtene har forskellig længde: Tegnet = sorteres mellem cifrene og bogstaverne og kan ødelægge rækkefølgen.
Base32hex i DNSSEC NSEC3
NSEC3-poster, defineret i RFC 5155, beviser, at et DNS-navn ikke findes, og gør det samtidig sværere at liste alle navne i zonen. Hvert navn hashes med SHA-1, og den 20 bytes lange hash skrives som en Base32hex-etiket på 32 tegn uden udfyldning, normalt vist med små bogstaver. Fordi kodningen bevarer hashværdiernes rækkefølge, danner de hashede navne en sorteret kæde. For at gøre en hash til sådan en etiket indsætter du den som hex-input, slår Udfyldning fra og vælger Små bogstaver. Dette værktøj udfører kun kodningstrinnet; det beregner ikke den saltede, itererede NSEC3-hash.
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)
Specifikation
| Alfabet | 0-9 A-V |
|---|---|
| Outputstørrelse | 8 tegn pr. 5 bytes (160 %) |
| Udfyldning | Udfyldes med = til et multiplum af 8 tegn |
| Standard | RFC 4648 afsnit 7 |
| Skelner mellem store og små bogstaver | Nej |
Eksempler
| Input (UTF-8) | Output |
|---|---|
Hello, World! | 91IMOR3F5GG5ERRIDHI22=== |
Base64.is | 89GN6P9M6GN6ISO= |
你好 | SIUQ1PD5NK====== |
Ofte stillede spørgsmål
Hvad er forskellen på Base32 og Base32hex?
A-Z 2-7; Base32hex bruger 0-9 A-V, som bevarer dataenes sorteringsrækkefølge. De to kan ikke bruges i flæng.Skelner Base32hex mellem store og små bogstaver?
Alfabetet er defineret med store bogstaver, men denne dekoder accepterer også input med små bogstaver. Slå Små bogstaver til, hvis du har brug for output med små bogstaver, for eksempel til DNS-etiketter.
Skal jeg bruge udfyldning?
= til et multiplum af 8 tegn, men mange formater, herunder NSEC3, udelader den. Dekoderen accepterer begge dele, så vælg det, som det modtagende system forventer.