Je gegevens zijn 100% privé -- Base64 wordt volledig op je eigen apparaat gecodeerd en gedecodeerd.
Base64 is een manier om binaire gegevens weer te geven als platte tekst met behulp van 64 ASCII-tekens: A–Z, a–z, 0–9, plus + en /. Hiermee kunnen binaire bestanden zoals afbeeldingen, sleutels en e-mailbijlagen veilig worden verzonden via systemen die zijn gebouwd voor tekst. Het is codering, geen versleuteling.
Base64 gebruikt een vast alfabet van 64 tekens. Elke waarde van 0 tot 63 komt overeen met precies één teken, waardoor elk willekeurig 3 bytes aan binaire gegevens wordt omgezet in 4 leesbare tekens:
| Waarden | Tekens | |
|---|---|---|
| 0–25 | A–Z | 26 hoofdletters |
| 26–51 | a–z | 26 kleine letters |
| 52–61 | 0–9 | 10 cijfers |
| 62–63 | + / | 2 symbolen |
Het "="-teken is de enige uitzondering. Het is opvulling, niet één van de 64 waarden, en maakt alleen het laatste blok compleet.
U hebt het bijna zeker al eerder gezien. Base64 verschijnt overal waar binaire gegevens in tekst moeten worden verwerkt:
Die data-URI-truc ziet er als volgt uit. De lange tekenreeks is de volledige afbeelding:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" />Vroege netwerkprotocollen waren gebouwd voor tekst, niet voor ruwe bytes. ASCII gebruikte 7 bits en 128 tekens, wat prima werkte voor het Engels maar niet voor binaire gegevens. Sommige systemen beschadigden besturingstekens of herschreven regeleindes (LF naar CR + LF), waardoor afbeeldingen en audio tijdens verzending stilzwijgend werden gecorrumpeerd.
Base64 omzeilt dit alles door alleen tekens te gebruiken die elk systeem al kent. Base16 en Base32 doen hetzelfde met kleinere alfabetten, maar Base64 pakt meer gegevens per teken terwijl het veilig blijft. Dat is waarom het de standaard werd.
Het hele schema is één herhaald idee: neem 3 bytes (24 bits), verdeel ze opnieuw in vier 6-bits groepen en zoek elke groep op in het alfabet. Hier is het woord "Logto", met de hand gecodeerd.
Stap 1. Zet elk teken om naar zijn 8-bits binaire waarde:
| Teken | ASCII-code | Binair |
|---|---|---|
| L | 76 | 01001100 |
| o | 111 | 01101111 |
| g | 103 | 01100111 |
| t | 116 | 01110100 |
| o | 111 | 01101111 |
Stap 2. Neem de eerste drie bytes, "Log", en verdeel dezelfde 24 bits opnieuw in vier 6-bits groepen:
Stap 3. Lees elke 6-bits groep als een getal en zoek het getal op in het alfabet:
| 6-bits groep | Waarde | Base64-teken |
|---|---|---|
| 010011 | 19 | T |
| 000110 | 6 | G |
| 111101 | 61 | 9 |
| 100111 | 39 | n |
"Logto" is 5 bytes, geen veelvoud van 3. De laatste twee bytes, "to", laten een verdeling van 6 + 6 + 4 over. Vul die laatste 4 bits aan met nullen om een 6-bits groep te vormen en voeg één "=" toe om het blok van 4 tekens te voltooien:
Voeg de blokken samen:
"Logto" → TG9ndG8=Elke programmeertaal heeft dit ingebouwd. In Node.js:
const text = 'Logto';
const base64 = Buffer.from(text).toString('base64');
console.log(base64); // TG9ndG8=Drie regels vloeien voort uit dat proces die het waard zijn te onthouden:
Gebruik Base64 wanneer binaire gegevens door een tekst-enkel kanaal moeten:
Wat u ervoor terugkrijgt:
Standaard Base64 maakt gebruik van drie tekens die conflicteren met de werking van URL's, queryreeksen en bestandsnamen: +, / en de =-opvulling. Zet een normale Base64-tekenreeks in een koppeling en het kan op stille manieren mislukken:
U kunt ze procentcoderen (+ wordt %2B, / wordt %2F, = wordt %3D), maar dat maakt de tekenreeks groter en is eenvoudig per ongeluk dubbel te coderen.
Base64URL (RFC 4648 §5) lost dit aan de bron op: vervang + door -, vervang / door _, en laat de =-opvulling weg. Het resultaat kan direct in een URL, queryparameter of bestandsnaam worden gebruikt zonder iets te escapen. U zult het zien in URL's, bestandsnamen en veel web-API's.
const base64 = 'TG9ndG8=';
const urlSafe = base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
console.log(urlSafe); // TG9ndG8Base64 is een weergave, geen gratis lunch. Houd drie dingen in gedachten:
Nee. Het is omkeerbare codering met een openbaar alfabet, dus iedereen kan het direct decoderen en het voegt nul vertrouwelijkheid toe. Versleutel gevoelige gegevens in plaats daarvan.
Base64 zet elke 3 bytes om in 4 tekens, waardoor de gecodeerde vorm altijd ongeveer een derde groter is dan de originele bytes.
Het zijn opvultekens die de uitvoer een veelvoud van 4 tekens houden. Één "=" betekent dat de invoer 2 resterende bytes had; twee "=" betekent 1; geen "=" betekent dat de lengte al een veelvoud van 3 bytes was.
Base64URL is dezelfde codering met een URL- en bestandsnaamveilig alfabet: - en _ vervangen + en /, en de =-opvulling wordt doorgaans weggelaten. Het is gebruikelijk in URL's, bestandsnamen en veel web-API's.
Elke binaire inhoud: afbeeldingen, PDF's, sleutels, uitvoerbare bestanden. Base64 werkt op ruwe bytes, dus het originele inhoudstype maakt niet uit.
Nee. Coderen en decoderen worden volledig in uw browser uitgevoerd. Niets wat u plakt wordt geüpload of geregistreerd.