🛠️

Whiz Tools

Build • Create • Innovate

Base64-kodare och avkodare: Konvertera text till/från Base64

Gratis onlineverktyg för att koda text till Base64 eller avkoda Base64-strängar tillbaka till text. Stöder standard och URL-säker Base64-kodning med omedelbar konvertering.

Base64 Kodare/Dekodare

Konvertera text till och från Base64-kodning

Kopiera
📚

Dokumentation

Base64-kodare och avkodare

Introduktion

Base64 är ett binärt-till-text kodningsschema som representerar binär data i ett ASCII-strängformat. Det är utformat för att överföra data som lagras i binära format över kanaler som endast pålitligt stöder textinnehåll. Base64-kodning konverterar binär data till en uppsättning av 64 tecken (därav namnet) som kan överföras säkert över textbaserade protokoll utan datakorruption.

Base64-teckenuppsättningen består av:

  • Versaler A-Z (26 tecken)
  • Gemener a-z (26 tecken)
  • Siffror 0-9 (10 tecken)
  • Två ytterligare tecken, vanligtvis "+" och "/" (2 tecken)

Detta verktyg gör att du enkelt kan koda text till Base64-format eller avkoda Base64-strängar tillbaka till deras ursprungliga text. Det är särskilt användbart för utvecklare, IT-professionella och alla som arbetar med data som behöver överföras säkert över textbaserade kanaler.

Hur Base64-kodning fungerar

Kodningsprocess

Base64-kodning fungerar genom att konvertera varje grupp av tre byte (24 bitar) av binär data till fyra Base64-tecken. Processen följer dessa steg:

  1. Konvertera den inmatade texten till dess binära representation (använda ASCII eller UTF-8-kodning)
  2. Gruppera den binära datan i bitar om 24 bitar (3 byte)
  3. Dela varje 24-bits chunk i fyra 6-bits grupper
  4. Konvertera varje 6-bits grupp till sitt motsvarande Base64-tecken

När inmatningslängden inte är delbar med 3, läggs padding med "=" tecken till för att bibehålla 4:3-förhållandet mellan ut- och inmatningslängder.

Matematisk representation

För en sekvens av byte b1,b2,b3b_1, b_2, b_3, beräknas motsvarande Base64-tecken c1,c2,c3,c4c_1, c_2, c_3, c_4 som:

c1=Base64[(b1>>2)]c_1 = \text{Base64}[(b_1 >> 2)]
c2=Base64[((b1&3)<<4)(b2>>4)]c_2 = \text{Base64}[((b_1 \& 3) << 4) | (b_2 >> 4)]
c3=Base64[((b2&15)<<2)(b3>>6)]c_3 = \text{Base64}[((b_2 \& 15) << 2) | (b_3 >> 6)]
c4=Base64[(b3&63)]c_4 = \text{Base64}[(b_3 \& 63)]

Där Base64[i]\text{Base64}[i] representerar det ii:te tecknet i Base64-alphabetet.

Avkodningsprocess

Base64-avkodning reverserar kodningsprocessen:

  1. Konvertera varje Base64-tecken till sitt 6-bits värde
  2. Sammanfoga dessa 6-bits värden
  3. Gruppera bitarna i 8-bits chunkar (byte)
  4. Konvertera varje byte till sitt motsvarande tecken

Padding

När antalet byte som ska kodas inte är delbart med 3, tillämpas padding:

  • Om det finns en byte kvar, konverteras den till två Base64-tecken följt av "=="
  • Om det finns två byte kvar, konverteras de till tre Base64-tecken följt av "="

Exempel

Låt oss koda texten "Hello" till Base64:

  1. ASCII-representation av "Hello": 72 101 108 108 111
  2. Binär representation: 01001000 01100101 01101100 01101100 01101111
  3. Gruppering i 6-bits chunkar: 010010 000110 010101 101100 011011 000110 1111
  4. Den sista chunk har bara 4 bitar, så vi lägger till padding med nollor: 010010 000110 010101 101100 011011 000110 111100
  5. Konvertering till decimal: 18, 6, 21, 44, 27, 6, 60
  6. Sökning i Base64-alphabetet: S, G, V, s, b, G, 8
  7. Resultatet är "SGVsbG8="

Observera padding "=" i slutet eftersom inmatningslängden (5 byte) inte är delbar med 3.

Formel

Den allmänna formeln för att beräkna längden på en Base64-kodad sträng är:

encoded_length=4×input_length3\text{encoded\_length} = 4 \times \lceil \frac{\text{input\_length}}{3} \rceil

Där x\lceil x \rceil representerar takfunktionen (avrundar upp till närmaste heltal).

Användningsområden

Base64-kodning används i stor utsträckning inom olika applikationer:

  1. E-postbilagor: MIME (Multipurpose Internet Mail Extensions) använder Base64 för att koda binära bilagor i e-post.

  2. Data-URL:er: Inbäddning av små bilder, typsnitt eller andra resurser direkt i HTML, CSS eller JavaScript med hjälp av data: URL-schemat.

  3. API-kommunikation: Säker överföring av binär data i JSON-payloads eller andra textbaserade API-format.

  4. Lagring av binär data i textformat: När binär data behöver lagras i XML, JSON eller andra textbaserade format.

  5. Autentiseringssystem: Basic Authentication i HTTP använder Base64-kodning (även om det inte är för säkerhet, bara för kodning).

  6. Kryptografi: Som en del av olika kryptografiska protokoll och system, ofta för kodning av nycklar eller certifikat.

  7. Cookie-värden: Kodning av komplexa datastrukturer för att lagras i cookies.

Alternativ

Även om Base64 är allmänt använt finns det alternativ som kan vara mer lämpliga i vissa situationer:

  1. URL-säker Base64: En variant som använder "-" och "_" istället för "+" och "/" för att undvika problem med URL-kodning. Användbart för data som kommer att inkluderas i URL:er.

  2. Base32: Använder en 32-teckensuppsättning, vilket resulterar i längre utdata men med bättre läsbarhet och skiftlägesokänslighet.

  3. Hex-kodning: Enkel konvertering till hexadecimal, vilket är mindre effektivt (dubblar storleken) men mycket enkelt och allmänt stöds.

  4. Binär överföring: För stora filer eller när effektivitet är avgörande, föredras direkta binära överföringsprotokoll som HTTP med lämpliga Content-Type-huvuden.

  5. Komprimering + Base64: För stora textdata kan komprimering före kodning mildra storleksökningen.

  6. JSON/XML-serialisering: För strukturerad data kan användning av inbyggd JSON- eller XML-serialisering vara mer lämplig än Base64-kodning.

Historia

Base64-kodning har sina rötter i tidig databehandling och telekommunikationssystem där binär data behövde överföras över kanaler som var avsedda för text.

Den formella specifikationen för Base64 publicerades först 1987 som en del av RFC 989, som definierade Privacy Enhanced Mail (PEM). Detta uppdaterades senare i RFC 1421 (1993) och RFC 2045 (1996, som en del av MIME).

Termen "Base64" kommer från det faktum att kodningen använder 64 olika ASCII-tecken för att representera binär data. Detta val av 64 tecken var avsiktligt, eftersom 64 är en potens av 2 (2^6), vilket gör konverteringen mellan binär och Base64 effektiv.

Med tiden har flera varianter av Base64 uppstått:

  • Standard Base64: Som definierats i RFC 4648, använder A-Z, a-z, 0-9, +, / och = för padding
  • URL-säker Base64: Använder - och _ istället för + och / för att undvika problem med URL-kodning
  • Filnamn-säker Base64: Liknande URL-säker, designad för användning i filnamn
  • Modifierad Base64 för IMAP: Används i IMAP-protokollet med en annan uppsättning specialtecken

Trots att den är över tre decennier gammal förblir Base64 ett grundläggande verktyg inom modern databehandling, särskilt med framväxten av webbapplikationer och API:er som i stor utsträckning förlitar sig på textbaserade dataformat som JSON.

Kodexempel

Här är exempel på Base64-kodning och avkodning i olika programmeringsspråk:

1// JavaScript Base64-kodning/avkodning
2function encodeToBase64(text) {
3  return btoa(text);
4}
5
6function decodeFromBase64(base64String) {
7  try {
8    return atob(base64String);
9  } catch (e) {
10    throw new Error("Ogiltig Base64-sträng");
11  }
12}
13
14// Exempelanvändning
15const originalText = "Hello, World!";
16const encoded = encodeToBase64(originalText);
17console.log("Kodad:", encoded);  // SGVsbG8sIFdvcmxkIQ==
18
19try {
20  const decoded = decodeFromBase64(encoded);
21  console.log("Avkodad:", decoded);  // Hello, World!
22} catch (error) {
23  console.error(error.message);
24}
25

Kantsituationer och överväganden

När du arbetar med Base64-kodning och avkodning, var medveten om dessa viktiga överväganden:

  1. Unicode och icke-ASCII-tecken: När du kodar text med icke-ASCII-tecken, se till att använda korrekt teckenkodning (vanligtvis UTF-8) innan Base64-kodning.

  2. Padding: Standard Base64 använder padding med "=" tecken för att säkerställa att utdata längden är en multipel av 4. Vissa implementationer tillåter att padding utelämnas, vilket kan orsaka kompatibilitetsproblem.

  3. Radbrytningar: Traditionella Base64-implementationer infogar radbrytningar (vanligtvis varje 76 tecken) för läsbarhet, men moderna applikationer utelämnar ofta dessa.

  4. URL-säker Base64: Standard Base64 använder "+" och "/" tecken som har speciella betydelser i URL:er. För URL-kontexter, använd URL-säker Base64 som ersätter dessa med "-" och "_".

  5. Whitespace: Vid avkodning är vissa implementationer tillåtande och ignorerar whitespace, medan andra kräver exakt inmatning.

  6. Storleksökning: Base64-kodning ökar storleken på data med cirka 33% (4 utdata byte för varje 3 indata byte).

  7. Prestanda: Base64-kodning/avkodning kan vara beräkningsintensiv för mycket stora data. Överväg strömmande metoder för stora filer.

Referenser

  1. RFC 4648 - The Base16, Base32, and Base64 Data Encodings
  2. RFC 2045 - MIME Part One: Format of Internet Message Bodies
  3. MDN Web Docs: Base64 encoding and decoding
  4. Base64 - Wikipedia
  5. MIME - Wikipedia