Wat is Base64?
Base64 is een methode voor het converteren van willekeurige binaire gegevens, gegevens die bestaan uit meer dan alleen teksttekens, naar een tekstbericht dat vervolgens kan worden overgedragen via een computernetwerk. Het is wat een codering wordt genoemd. Hoewel de uitvoer van een base64-gecodeerd bericht niet iets is dat een mens gemakkelijk kan begrijpen, bestaat het nog steeds uit 64 veelvoorkomende Engelse tekens, waar de naam vandaan komt, met een extra 65e teken dat voor speciale doeleinden wordt gebruikt.
Het idee achter base64 ontstond toen de behoefte ontstond om meer dan eenvoudige tekstkarakters te krijgen via netwerkcommunicatie zoals e-mail. De eerste e-mailberichten begonnen als tekens gecodeerd in de American Standard Code for Information Interchange (ASCII), de coderingsmethode die wordt gebruikt in computers voor het weergeven van Engelstalige alfabettekens als tekst op schermen of printers. Omdat extra binaire informatie nodig was om door te komen, werden nieuwe coderingsschema's ontwikkeld.
De coderingsmethode base64 werd voor het eerst beschreven in de zogenaamde MIME-standaard (Multipurpose Internet Mail Extensions). De MIME-standaard gedefinieerde methoden waarmee andere tekens die niet ASCII-gecodeerd zijn, zoals alfabetten die door niet-Engelse talen worden gebruikt, evenals andere willekeurige binaire gegevens, ook kunnen worden gecodeerd in ASCII-reeksen en via e-mailberichten worden verzonden. Van de twee primaire coderingsmiddelen die worden beschreven door de MIME-standaard, deelt base64 de rol met een andere die bekend staat als quoted-printable. Hoewel de geciteerde afdrukbare methode ASCII enigszins verder kan uitbreiden dan de beperkte 94 afdrukbare tekens, kan base64 elke willekeurige reeks bytes nemen en deze omzetten in een ASCII-reeks.
Base64 moet gegevensreeksen nemen die anders niet aan de ASCII-standaard zouden voldoen en deze in ASCII omzetten. Om dit te doen, is de coderingsmethode een proces waarbij de gegevens worden verzameld in groepen van drie bytes en worden omgezet in vier getallen die overeenkomende ASCII-tekens vertegenwoordigen. Omdat een byte acht bits is, waarbij elke bit wordt weergegeven door een een of nul, worden drie bytes end-to-end gekoppeld en gaat de hele reeks in een 24-bits buffer. De 24 enen en nullen worden vervolgens opgesplitst in vier groepen van zes bits, waaraan elk een nummer wordt toegewezen dat overeenkomt met een ASCII-teken.
Omdat base64 alle binaire gegevens kan coderen, kan elke reeks bytes door het proces gaan. Er is echter een vangst in die gevallen waarin het aantal bytes voor codering niet deelbaar is door drie, zodat de bits in de buffer passen. Als een byte-reeks bijvoorbeeld vier of vijf bytes bevat, is er nog iets nodig om de buffer te vullen en de volledige 24 bits te maken. In deze gevallen wordt elke ontbrekende byte voorgesteld door acht nullen en wordt deze vervolgens omgezet in opvulkarakters in de voltooide codering. Dit is waar het eerder genoemde 65e teken vandaan komt, weergegeven in het gecodeerde bericht met een is-gelijk-teken (=); het verschijnt alleen aan het einde van een codering als er een filler nodig is.
Hoewel base64 oorspronkelijk is ontworpen voor het verzenden van binaire gegevens via e-mailberichten, is het gebruik ervan op een aantal andere gebieden naast MIME van belang geworden. Een dergelijk redelijk gebruik is dat webdatabases en applicaties gegevens coderen voor het creëren van een uniforme resource locator (URL) op een webformulier. De uitbreidbare opmaaktaal (XML) maakt ook gebruik van een variant waarmee binaire gegevens, zoals kleine afbeeldingen, in XML-documenten kunnen worden opgenomen. Andere variaties bestaan voor coderingsmethoden en andere beveiligingsgerelateerde technieken zoals het verbergen van wachtwoorden.