Kodare och avkodare med anpassat alfabet

Skriv ett eget alfabet eller utgå från ett förval, och koda eller avkoda sedan med det. Välj Stort tal för alfabet av valfri längd, eller Bitgrupper för utdata i stil med RFC 4648.

Körs helt i din webbläsare. Inget laddas upp.

Så använder du verktyget

  1. Skriv ditt alfabet, eller välj ett förval och redigera det. Varje tecken får bara förekomma en gång.
  2. Välj metod: Stort tal för alfabet av valfri längd, eller Bitgrupper för alfabet med 2, 4, 8, 16, 32 eller 64 tecken.
  3. Med Bitgrupper kan du vid behov ange ett utfyllnadstecken som inte ingår i alfabetet.
  4. Koda din text, eller klistra in en sträng skriven med ditt alfabet för att avkoda den.

Två sätt att mappa byte till tecken

Stort tal fungerar som Base58. Hela indatan läses som ett enda stort heltal som delas om och om igen med alfabetets längd; varje rest väljer ett tecken. Metoden fungerar för alla alfabet med minst 2 tecken, till exempel 10, 36, 58 eller 62. Inledande nollbyte skrivs som alfabetets första tecken, så att de finns kvar efter en kodning fram och tillbaka. Det finns ingen utfyllnad, och indatan är begränsad till cirka 20 kB eftersom beräkningarna blir långsamma för lång data.

Bitgrupper fungerar som RFC 4648. Indatan delas upp i grupper med ett fast antal bitar: 1 bit för ett alfabet med 2 tecken, 4 bitar för 16, 5 bitar för 32 och 6 bitar för 64. Varje grupp är ett index i alfabetet. Det är precis så hex, Base32 och Base64 fungerar, och utdatans längd beror bara på indatans längd.

Varför de två metoderna ger olika resultat

Den ena metoden kodar datans talvärde, den andra dess bitar position för position. Resultaten skiljer sig oftast åt, och en sträng måste avkodas med den metod som skapade den.

AlfabetIndataBitgrupperStort tal
Standard-Base64HiSGk=Ehp
Base32 enligt RFC 4648HiJBUQ====SDJ
01A010000011000001
0123456789Hiinte tillgängligt18537

Med Bitgrupper och = som utfyllnad återger standardalfabeten vanlig Base64 och Base32. Stort tal tappar den inledande nollbiten i A eftersom metoden skriver ett värde, inte ett fast antal bitar. Med de tio siffrorna som alfabet visar den helt enkelt bytena i Hi som ett decimaltal.

Utfyllnadstecknet gäller bara för Bitgrupper. Utdatan fylls ut till en multipel av 4 tecken för alfabet med 64 tecken och till en multipel av 8 för alfabet med 32 och 8 tecken. Med 2, 4 eller 16 tecken fyller varje byte ett helt antal tecken, så utfyllnad behövs aldrig.

Regler för ett giltigt alfabet

  • Minst två tecken.
  • Inga dubbletter. Avkodaren mappar varje tecken tillbaka till exakt ett värde. Om a stod för både 0 och 10 skulle en sträng som innehåller det inte gå att avkoda.
  • Skiftläget spelar roll. a och A är olika tecken.
  • Utfyllnadstecknet får inte ingå i alfabetet, eftersom det då inte skulle gå att skilja från data.

Allt körs i din webbläsare, så ditt alfabet och din data stannar på din enhet.

När ett anpassat alfabet är till nytta

  • Maskerade id:n. Ett omblandat alfabet gör om identifierare till token utan något uppenbart mönster. Det döljer men skyddar inte: alla som känner till alfabetet kan avkoda dem.
  • Proprietära eller äldre format. Kopiera ett systems eget alfabet från dess dokumentation och avkoda dess data direkt.
  • Lärande. Jämför olika alfabetslängder och båda metoderna för att se hur baskonvertering fungerar. För fasta alfabet, se Base58 och Base62.

Vanliga frågor

Vad är skillnaden mellan Stort tal och Bitgrupper?

Stort tal konverterar hela indatan som ett enda heltal till den nya basen, precis som Base58, och fungerar med alla alfabetslängder. Bitgrupper delar upp indatan i grupper med ett fast antal bitar, precis som Base64, och kräver ett alfabet med 2, 4, 8, 16, 32 eller 64 tecken.

Varför stämmer mitt anpassade Base64-alfabet inte med vanlig Base64-utdata?

Vanlig Base64 använder bitgrupper. Välj metoden Bitgrupper och ange = som utfyllnadstecken för att få samma resultat. Metoden Stort tal ger en helt annan sträng med samma alfabet.

Varför är dubbletter inte tillåtna?

Varje tecken måste avkodas till exakt ett värde. Ett upprepat tecken skulle ha två betydelser, och originaldatan skulle inte kunna återställas på ett tillförlitligt sätt.

Kan jag använda ett utfyllnadstecken med metoden Stort tal?

Nej. Utdata från Stort tal har ingen fast blockstorlek, så det finns inget att fylla ut. Alternativet Utfyllnadstecken gäller bara för Bitgrupper.

Är ett anpassat alfabet en form av kryptering?

Nej. Det är fortfarande en kodning utan nyckel. Ett omblandat alfabet kan göra data svårare att känna igen vid en första anblick, men det ska aldrig användas för att skydda hemligheter.