Base64-kodning förklaras: vad det är och när det ska användas
Base64 finns överallt i webbutveckling – inbäddad i e-postrubriker, inbakad i data-URI:er, används i autentiseringstokens och lindas runt binära filer i textprotokoll. Men vad är det egentligen? Och om det förvränger data, gör det inte det säkert? Svaret är nej: Base64 är kodning, inte kryptering. Det är ett sätt att representera binära eller godtyckliga data som vanlig ASCII-text, inget mer. Att förstå när och varför man ska använda det kan förtydliga många förvirrande ögonblick i utvecklingen.
Vad är Base64?
Base64 är en metod för att koda binär data till 64 säkra ASCII-tecken – bokstäverna A–Z, a–z, siffrorna 0–9, plustecken och snedstreck. Det fungerar genom att ta binär inmatning (oavsett om text, bilder eller råbytes) och dela upp den i 6-bitarsbitar. Varje bit blir ett index i Base64-alfabetet, så utmatningen är alltid läsbar text. "64" hänvisar till alfabetets storlek: 26 + 26 + 10 + 2 = 64 tecken.
Varför 64? Eftersom dessa tecken är säkra i nästan alla system - e-post, gamla terminaler, XML, JSON och vanlig text. En binär fil kan skadas under överföring om speciella bytes tolkas fel; Base64 garanterar att utgången överlever oförändrad genom vilken textbaserad kanal som helst. Du kan koda och avkoda Base64 direkt i din webbläsare utan att ladda upp din data någonstans.
Base64 är inte kryptering
Detta är den kritiska skillnaden: Base64 förvränger utseendet på data, men vem som helst kan vända på det. Om du Base64-kodar lösenordet secret123, blir det c2VjcmV0MTIz – men det är inte säkert. Avkodning är lika trivialt. Base64 är obfuskation för överföring, inte skydd för säkerhet. Om du behöver hålla data hemlig, använd kryptering (som AES), inte Base64. Base64 är hur du säkert skickar krypterad data via en textkanal, men det är inte själva krypteringen.
Vanliga användningar av Base64
Base64 är standard i flera verkliga scenarier:
- Data-URI:er. Istället för att länka till en bildfil kan du bädda in bilden direkt i HTML eller CSS som en data-URI:
data:image/png;base64,iVBORw0KG…. Detta undviker en extra HTTP-förfrågan, användbar för små ikoner eller när tillgångar inte kan lagras separat. - E-postbilagor. SMTP (e-postprotokoll) designades för text. Binära bilagor är Base64-kodade innan de skickas och avkodas sedan av din e-postklient vid mottagandet.
- Autentiseringstokens. Många API:er använder Base64 för tokens — inte för säkerhet, utan för att tokens ofta är binär data som måste överföras som läsbar text i rubriker eller URL:er.
- Bädda in filer i JSON eller XML. Om du behöver inkludera en binär blob (en PDF, ett kalkylblad, ett arkiv) i ett JSON API-svar, kodar Base64 den som en sträng som inte bryter JSON-strukturen.
Storleken overhead: Base64 gör data större
En nackdel: Base64-utgången är cirka 33 % större än den ursprungliga binära. Detta beror på att du packar in 8 bitars indata i 6-bitars bitar, och utfyllnad behövs när ingångslängden inte är en multipel av 3. Så om du bäddar in en 300 KB-bild som en data-URI, är Base64-versionen ungefär 400 KB — långsammare att ladda och analysera. För små ikoner är denna overhead värd den sparade HTTP-förfrågan; för stora filer är det vanligtvis bättre att länka dem separat.
Varianter och relaterade kodningar
Standard Base64 använder + och /, som har speciella betydelser i URL:er och filnamn. URL-säker Base64 ersättare - och _ istället, vilket gör det säkert att använda i sökvägar och frågesträngar utan procentkodning. Om du bygger ett anpassat webbadresskodningsschema, överväg om URL-kodning eller URL-säker Base64 passar ditt behov.
Base64 är en av flera kodningar som löser olika problem. Hexadecimal kodning representerar binär som två läsbara tecken per byte (långsammare att avkoda, men ingen utfyllnad och läsbar för människor), används ofta i hash- och kontrollsummor. HTML-enheter koda specialtecken som < och & så de visas korrekt på webbsidor - ett annat problem än godtycklig binär transport. Varje kodning är ett verktyg för ett specifikt jobb.