Base64
Schrijf of plak tekst, dan wordt die meteen gecodeerd of gedecodeerd.
0 Tekens · 0 Bytes
Resultaat
Zo werkt het
Base64 schrijft willekeurige bytes om in 64 tekens die het transport overleven door systemen die voor tekst zijn gebouwd, zoals e-mail en webadressen.
Uit drie bytes komen vier tekens, waardoor het resultaat ruim een derde langer is dan het origineel. De gelijktekens aan het eind zijn opvultekens, voor als het aantal bytes niet netjes door drie deelbaar is.
Base64 is codering, geen versleuteling. Iedereen kan het resultaat decoderen, dus het beschermt niets. Gebruik het om gegevens te vervoeren, nooit om ze te verbergen.
De tekst wordt als UTF-8 gecodeerd voordat hij wordt omgerekend, en daarom werken letters met een trema of accent en emoji. De ingebouwde functie van de browser gaat op zichzelf alleen goed om met tekens onder de 256.
De URL-veilige variant wisselt de plus voor een koppelteken en de schuine streep voor een liggend streepje. Het decoderen hier neemt beide varianten aan, met of zonder opvultekens.
Zo werkt de tool
Bij het coderen maakt de tool van de tekst eerst UTF-8-bytes en laat de functie btoa van de browser die als Base64 schrijven. Bij het decoderen wordt alle witruimte verwijderd, ook regelovergangen midden in de tekst, worden koppeltekens en liggende streepjes weer plustekens en schuine strepen, en komen er gelijktekens bij tot de lengte deelbaar is door vier. Daarna decodeert atob van de browser, en de bytes worden streng als UTF-8 gelezen: bytes die geen geldige UTF-8 vormen, geven een foutmelding in plaats van vervangingstekens. Onder het veld staan zowel tekens als bytes. De tekens worden geteld zoals een lezer ze ziet, dus een emoji met huidskleur is één teken maar acht bytes in UTF-8, en de bytes bepalen hoe lang het resultaat wordt.
Rekenvoorbeeld
Hé wordt in UTF-8 drie bytes: 48 voor de H en C3 A9 voor de é. De 24 bits worden in vier groepen van zes verdeeld: 010010, 001100, 001110 en 101001, dus de getallen 18, 12, 14 en 41. In het Base64-alfabet, waarin A–Z 0–25 zijn en a–z 26–51, zijn dat S, M, O en p. Het resultaat is SMOp, zonder opvulling, omdat drie bytes precies in vier tekens passen.
Hoi! is vier bytes en wordt SG9pIQ==. De vierde byte vult maar twee tekens van een nieuwe groep van vier, en de twee gelijktekens maken de groep vol.
Randgevallen
De tool werkt met tekst. Base64 met binaire gegevens, zoals een afbeelding of een gecomprimeerd bestand, geeft bij het decoderen in de regel de foutmelding, omdat de bytes geen geldige UTF-8 zijn.
Base64 in e-mail is over regels verdeeld: RFC 2045 staat hoogstens 76 tekens per regel toe en zegt dat regelovergangen bij het decoderen moeten worden genegeerd. Omdat de tool eerst alle witruimte verwijdert, kun je een gecodeerd tekstdeel uit een e-mail plakken zoals het is.
Een tekenreeks waarvan de lengte bij deling door vier rest 1 geeft, kan nooit geldig zijn. Een los laatste teken draagt maar zes bits, te weinig voor een hele byte, en daarom wijst het algoritme uit de Infra Standard van WHATWG, dat atob volgt, zulke invoer af. SG9pI, dat is SG9pIQ== zonder de laatste drie tekens, geeft de foutmelding, terwijl SG9pIQ zonder gelijktekens als Hoi! wordt gedecodeerd.