Koder og dekoder med egendefinert alfabet

Skriv inn ditt eget alfabet eller start fra et forhåndsvalg, og kod eller dekod med det. Velg Stort tall for alle alfabetlengder, eller Bitgrupper for utdata i RFC 4648-stil.

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

Slik bruker du verktøyet

  1. Skriv inn alfabetet ditt, eller velg et forhåndsvalg og rediger det. Hvert tegn kan bare forekomme én gang.
  2. Velg metode: Stort tall for alle alfabetlengder, eller Bitgrupper for alfabeter på 2, 4, 8, 16, 32 eller 64 tegn.
  3. Med Bitgrupper kan du eventuelt angi et utfyllingstegn som ikke er en del av alfabetet.
  4. Kod teksten din, eller lim inn en streng skrevet med alfabetet ditt for å dekode den.

To måter å knytte byte til tegn på

Stort tall fungerer som Base58. Hele inndataene leses som ett stort heltall og deles igjen og igjen på lengden av alfabetet; hver rest velger et tegn. Metoden fungerer for alle alfabeter på minst 2 tegn, for eksempel 10, 36, 58 eller 62. Innledende nullbyte skrives som det første tegnet i alfabetet, slik at de overlever en konvertering fram og tilbake. Det finnes ingen utfylling, og inndataene er begrenset til omtrent 20 KB fordi aritmetikken blir treg for lange data.

Bitgrupper fungerer som RFC 4648. Inndataene deles opp i grupper med et fast antall bit: 1 bit for et alfabet på 2 tegn, 4 bit for 16, 5 bit for 32 og 6 bit for 64. Hver gruppe er en indeks i alfabetet. Det er nøyaktig slik hex, Base32 og Base64 fungerer, og lengden på utdataene avhenger bare av lengden på inndataene.

Hvorfor de to metodene gir ulike resultater

Den ene metoden koder den numeriske verdien av dataene, den andre bitene deres posisjon for posisjon. Resultatene er vanligvis forskjellige, og en streng må dekodes med metoden som laget den.

AlfabetInndataBitgrupperStort tall
Standard Base64HiSGk=Ehp
RFC 4648 Base32HiJBUQ====SDJ
01A010000011000001
0123456789Hiikke tilgjengelig18537

Med Bitgrupper og = som utfylling gjengir standardalfabetene vanlig Base64 og Base32. Stort tall utelater den innledende nullbiten i A fordi metoden skriver en verdi, ikke et fast antall bit. Med de ti sifrene som alfabet viser den ganske enkelt bytene i Hi som et desimaltall.

Utfyllingstegnet gjelder bare Bitgrupper. Utdataene fylles ut til et multiplum av 4 tegn for alfabeter på 64 tegn og til et multiplum av 8 for alfabeter på 32 og 8 tegn. Med 2, 4 eller 16 tegn fyller hver byte et helt antall tegn, så utfylling trengs aldri.

Regler for et gyldig alfabet

  • Minst to tegn.
  • Ingen duplikater. Dekoderen knytter hvert tegn til nøyaktig én verdi. Hvis a stod for både 0 og 10, kunne en streng som inneholder den, ikke dekodes.
  • Store og små bokstaver er forskjellige. a og A er to ulike tegn.
  • Utfyllingstegnet kan ikke være med i alfabetet, ellers kunne det ikke skilles fra dataene.

Alt kjører i nettleseren din, så alfabetet og dataene dine blir værende på enheten din.

Når et egendefinert alfabet er nyttig

  • Tilslørte ID-er. Et stokket alfabet gjør identifikatorer om til tokener uten noe åpenbart mønster. Dette skjuler, men beskytter ikke: alle som kjenner alfabetet, kan dekode dem.
  • Proprietære eller eldre formater. Kopier et systems eget alfabet fra dokumentasjonen og dekod dataene direkte.
  • Læring. Sammenlign alfabetlengder og begge metodene for å se hvordan konvertering mellom tallsystemer fungerer. For faste alfabeter, se Base58 og Base62.

Ofte stilte spørsmål

Hva er forskjellen mellom Stort tall og Bitgrupper?

Stort tall konverterer hele inndataene som ett heltall til det nye grunntallet, slik Base58 gjør, og fungerer med alle alfabetlengder. Bitgrupper deler inndataene opp i grupper med et fast antall bit, slik Base64 gjør, og krever et alfabet på 2, 4, 8, 16, 32 eller 64 tegn.

Hvorfor gir ikke mitt egendefinerte Base64-alfabet samme utdata som standard Base64?

Standard Base64 bruker bitgrupper. Velg metoden Bitgrupper og angi = som utfyllingstegn for å få samme resultat. Metoden Stort tall gir en helt annen streng med det samme alfabetet.

Hvorfor kan ikke et tegn forekomme flere ganger?

Hvert tegn må dekodes til nøyaktig én verdi. Et tegn som gjentas, ville hatt to betydninger, og de opprinnelige dataene kunne ikke gjenopprettes pålitelig.

Kan jeg bruke et utfyllingstegn med metoden Stort tall?

Nei. Utdata fra Stort tall har ingen fast blokkstørrelse, så det er ingenting å fylle ut. Utfyllingsvalget gjelder bare Bitgrupper.

Er et egendefinert alfabet en form for kryptering?

Nei. Det er fortsatt en koding uten nøkkel. Et stokket alfabet kan gjøre data vanskeligere å kjenne igjen ved første øyekast, men det bør aldri brukes til å beskytte hemmeligheter.