Crockford Base32-koder og -dekoder

Konverter tekst, hex-byte eller filer til Douglas Crockfords Base32 og tilbake. Dekoderen tilgir skrivefeil: Den ignorerer store og små bokstaver og bindestreker, og leser O som 0 og I eller L som 1.

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

Slik bruker du verktøyet

  1. Velg Kode for å gjøre tekst om til Crockford Base32, eller Dekode for å gjøre den om til tekst igjen.
  2. La varianten Crockford være valgt, og sørg for at Utfylling er slått av. Slå på Små bokstaver for utdata med små bokstaver.
  3. Skriv eller lim inn inndataene, eller åpne en fil. Ved dekoding ignoreres bindestreker og mellomrom.
  4. Kopier resultatet eller last det ned som en fil.

Hva er Crockford Base32?

Douglas Crockford utformet dette Base32-alfabetet for identifikatorer som folk leser, skriver inn og sier høyt. Det bruker de ti sifrene og 22 store bokstaver: 0123456789ABCDEFGHJKMNPQRSTVWXYZ. Bokstavene I og L er utelatt fordi de ligner sifferet 1, O fordi den ligner 0, og U for å redusere sjansen for at det tilfeldigvis dannes uanstendige ord.

Hvert symbol bærer 5 bit, så 5 byte blir 8 tegn, akkurat som i RFC 4648 Base32. Symbolene står i stigende ASCII-rekkefølge, så strenger uten utfylling og med samme bokstavstørrelse sorteres i samme rekkefølge som dataene de koder. Crockfords spesifikasjon bruker ingen utfylling, så la valget Utfylling være slått av.

Tolerant dekoding

Crockfords spesifikasjon ber dekodere om å godta det folk faktisk skriver, og det gjør dette verktøyet:

  • Store og små bokstaver behandles likt.
  • Bokstaven O leses som sifferet 0, og bokstavene I og L leses som 1.
  • Bindestreker, som kan settes inn for å gjøre lange koder lettere å lese, ignoreres, og det samme gjelder mellomrom og linjeskift.

Bokstaven U er ikke gyldig og rapporteres sammen med posisjonen sin.

Byte, tall og ULID

Crockford beskriver kodingen sin ut fra tall, mens dette verktøyet koder en rekke byte i grupper på 5 bit, slik RFC 4648 gjør, med Crockfords symboler. Når antallet bit ikke er et multiplum av 5, plasserer tallbaserte implementeringer de overskytende nullbitene først, mens dette verktøyet plasserer dem sist. Resultatene kan derfor bli forskjellige.

ULID er et vanlig eksempel. Formatet bruker Crockford-alfabetet, men koder 128-bitsverdien sin som et tall på 26 tegn, så de 16 bytene i en ULID gir ikke den samme strengen her, og dekoding av en ULID gir byte som er forskjøvet med to bit. Det valgfrie kontrollsymbolet fra Crockfords spesifikasjon, et ekstra tegn for verdien modulo 37, støttes ikke: Dette verktøyet verken legger det til eller kontrollerer det.

Spesifikasjon

Alfabet0-9 A-Z uten I L O U
Utdatastørrelse8 tegn per 5 byte (160 %)
UtfyllingIngen
StandardCrockford Base32 (2002)
Skiller store og små bokstaverNei

Eksempler

Inndata (UTF-8)Utdata
Hello, World!91JPRV3F5GG5EVVJDHJ22
Base64.is89GQ6S9P6GQ6JWR
你好WJYT1SD5QM

Ofte stilte spørsmål

Skiller Crockford Base32 mellom store og små bokstaver?

Nei. Utdataene har store bokstaver som standard, og valget Små bokstaver bytter til små. Dekoderen godtar begge deler, også blandet i samme streng.

Hvorfor mangler I, L, O og U i alfabetet?

I og L forveksles lett med 1, og O med 0, så de er utelatt og leses som disse sifrene ved dekoding. U er utelatt slik at tilfeldige koder har mindre sjanse for å danne støtende engelske ord.

Støtter dette verktøyet Crockfords kontrollsymbol?
Nei. Spesifikasjonen tillater et valgfritt ekstra tegn med en kontrollsum modulo 37, som bruker tilleggssymbolene * ~ $ = U. Dette verktøyet verken legger det til eller kontrollerer det, så fjern et eventuelt kontrollsymbol før du dekoder.
Kan jeg dekode en ULID her?

Ikke til de nøyaktige 16 bytene. ULID koder sine 128 bit som ett tall med de overskytende bitene først, mens dette verktøyet arbeider med bytegrupper og plasserer dem sist. Bruk et ULID-bibliotek for å lese tidsstempelet og den tilfeldige delen.