Wat is Base64-codering? Een eerste voorbeeld met echte bytes

Begrijp het doel van Base64, zie Hallo wordt SGVsbG8= en herken het verschil tussen codering en encryptie.

Base64 is een manier om binaire gegevens weer te geven met gewone teksttekens. Een afbeelding, een document of een stuk tekst kunnen allemaal worden weergegeven als bytes. Wanneer een systeem deze bytes in een tekstveld nodig heeft, biedt Base64 een omkeerbare spelling die de ontvanger later kan decoderen.

Een klein voorbeeld

De tekst Hello bevat vijf ASCII bytes. Het coderen van die bytes levert SGVsbG8=. Het decoderen van die waarde retourneert dezelfde vijf bytes, die vervolgens kunnen worden gelezen als de originele tekst. Het gelijkteken behoort tot de laatste groep van de codering; het maakt geen deel uit van het woord Hallo.

Text:           Hello
Bytes in Hex:   48 65 6c 6c 6f
Base64:         SGVsbG8=
Decoded bytes:  48 65 6c 6c 6f

Probeer het voorbeeld in de encoder, kopieer het resultaat naar de decoder en vergelijk de geretourneerde tekst. Probeer dan eens een Chinees karakter of emoji. Tekst moet eerst bytes worden met behulp van een tekencodering zoals UTF-8; Base64 definieert zelf geen taal of tekenset.

Waar je het tegenkomt

Veelvoorkomende voorbeelden zijn onder meer een binair veld in JSON, een inline-afbeelding in een gegevensbestand URI en de leesbare delen van bepaalde tokens. Het omringende formaat levert de context. Een tekenreeks Base64 op zichzelf vertelt u niet de oorspronkelijke bestandsnaam, het type MIME, de tekencodering en of de inhoud betrouwbaar is.

Een gegevens URI voegt een voorvoegsel toe, zoals data:image/png;base64,. Dat voorvoegsel beschrijft de lading, maar maakt geen deel uit van het Base64-alfabet. Sommige decoders begrijpen de verpakking; anderen verwachten alleen het gedeelte na de komma. Kies het juiste hulpmiddel of de juiste modus in plaats van onbekende tekens willekeurig te verwijderen.

Drie veelvoorkomende misverstanden

Ten eerste is Base64 geen encryptie: er is geen geheim nodig om het te decoderen. Ten tweede worden bestanden er niet kleiner door; gewone opgevulde uitvoer is ongeveer een derde groter dan de originele bytes. Ten derde is niet elk gedecodeerd resultaat tekst. Een afbeelding kan correct worden gedecodeerd tot bytes die er in een tekstvak uitzien als onzin.

Wanneer een decodering mislukt, controleer dan de originele bron, het gekozen alfabet en of de string is afgekapt. Als dit lukt, kiest u een geschikte weergave: tekst voor geldige tekstbytes, Hex voor inspectie of een bestandsdownload voor binaire gegevens. Het gedetailleerde Base64-alfabet en voorbeelden zijn gedefinieerd in RFC 4648.