Naar inhoud springen

Base64-codering en -decodering - Gratis Online Base64-conversiegereedschap

Gratis base64-codering en -decoderingsgereedschap. Converteer tekst naar Base64 of decodeer Base64-strings direct. Ondersteunt standaard- en URL-veilige codering. Geen aanmelding vereist.

Base64-codering/decodering

Converteer tekst naar en van Base64-codering

Laadcalculator...
📚

Documentatie

Wat is Base64-codering?

Base64 is een manier om alle gegevens, waaronder binaire gegevens zoals afbeeldingen, om te zetten in platte tekst die alleen uit letters, cijfers en enkele symbolen bestaat. Een Base64-encoder zet gegevens om in deze tekstvorm. Een Base64-decoder zet de tekst terug naar de oorspronkelijke gegevens. Programma's gebruiken Base64 om binaire gegevens veilig door systemen te sturen, zoals e-mail of JSON, die platte tekst verwachten.

Base64 gebruikt een alfabet van 64 tekens:

  • Hoofdletters A–Z (26 tekens)
  • Kleine letters a–z (26 tekens)
  • Cijfers 0–9 (10 tekens)
  • Twee symbolen, meestal + en / (2 tekens)

Sommige systemen gebruiken ook een gelijkteken (=) aan het einde van de uitvoer als opvulling. Opvulling maakt geen deel uit van het alfabet van 64 tekens; het vult alleen de lengte aan.

Waarom Base64 bestaat

Veel oudere tekstprotocollen, waaronder e-mail (SMTP) en sommige onderdelen van HTTP, zijn ontworpen om ASCII-tekst van 7 bits te verzenden. Ze kunnen onbewerkte binaire bytes beschadigen, zoals de bytes in een JPEG-afbeelding. Base64 voorkomt dit door elke byte weer te geven met alleen veilige, afdrukbare tekens. Daarom worden e-mailbijlagen, afbeeldingen die in webpagina's zijn ingesloten en binaire velden in JSON vaak eerst met Base64 gecodeerd.

Base64 is geen compressie en geen versleuteling. Gecodeerde uitvoer is altijd groter dan de invoer en iedereen kan deze zonder wachtwoord of sleutel decoderen.

Dit hulpprogramma gebruiken

  1. Typ of plak tekst in het invoervak.
  2. Kies "Coderen naar Base64" om tekst naar Base64 om te zetten, of "Decoderen vanuit Base64" om een Base64-tekenreeks terug naar tekst om te zetten.
  3. Schakel live conversie in om de uitvoer tijdens het typen automatisch bij te werken.
  4. Kopieer het resultaat met de kopieerknop.

Het hulpprogramma leest en schrijft standaard-Unicodetekst, zodat letters met accenten, symbolen en emoji correct worden gecodeerd en gedecodeerd, en niet alleen gewone Engelse letters.

Hoe Base64-codering werkt

Base64 zet elke 3 bytes invoer (24 bits) om in 4 uitvoertekens (elk met 6 bits), omdat 24 gedeeld door 6 gelijk is aan 4.

  1. Zet de invoerbytes om naar binaire vorm.
  2. Groepeer de bits in blokken van 24 bits (3 bytes).
  3. Splits elk blok van 24 bits op in vier stukken van 6 bits.
  4. Zoek elk getal van 6 bits (van 0 tot 63) op in het Base64-alfabet en noteer het bijbehorende teken.

Als de invoerlengte geen veelvoud van 3 is, is het laatste blok kort. De encoder vult het aan met nulbits en voegt =-tekens toe aan de uitvoer, zodat het resultaat nog steeds uit groepen van 4 bestaat:

  • Eén overgebleven byte levert 2 Base64-tekens plus == op.
  • Twee overgebleven bytes leveren 3 Base64-tekens plus één = op.

Voorbeeld van Base64-codering

Het woord "Hello" coderen:

  1. ASCII-waarden: 72, 101, 108, 108, 111
  2. Binair: 01001000 01100101 01101100 01101100 01101111
  3. De eerste 3 bytes (24 bits) worden opgesplitst in vier groepen van 6 bits: 010010 000110 010101 101100. Dit zijn de getallen 18, 6, 21, 44 → de tekens S, G, V, s.
  4. De resterende 2 bytes (16 bits) worden opgesplitst in drie groepen van 6 bits, waarbij aan het einde 2 nulbits worden toegevoegd: 011011 000110 111100. Dit zijn de getallen 27, 6, 60 → de tekens b, G, 8.
  5. Omdat er 2 bytes over waren, wordt aan het einde één = toegevoegd.
  6. Resultaat: SGVsbG8=

Decoderen voert deze stappen in omgekeerde volgorde uit: elk teken wordt terugvertaald naar zijn getal van 6 bits, de bits worden samengevoegd tot een stroom en die stroom wordt uitgelezen in bytes van 8 bits.

Formule voor de lengte van Base64-gecodeerde gegevens

Voor een invoer van n bytes is de gecodeerde lengte in tekens:

encoded_length = 4 × ⌈n / 3⌉

waarbij ⌈x⌉ betekent dat naar boven wordt afgerond op het dichtstbijzijnde gehele getal. Deze formule laat zien waarom Base64-uitvoer altijd ongeveer een derde groter is dan de invoer: 4 uitvoertekens per 3 invoerbytes betekent een toename van 33%.

Waar Base64 wordt gebruikt

  • E-mailbijlagen (MIME). E-mail is ontworpen voor tekst, dus bestandsbijlagen worden vóór verzending naar Base64 omgezet, waardoor het bijgevoegde bestand ongeveer 33% groter wordt dan het origineel.
  • Data-URI's. Kleine afbeeldingen kunnen rechtstreeks als tekst in HTML of CSS worden ingesloten, bijvoorbeeld data:image/png;base64,iVBORw0KGgo..., zodat geen afzonderlijk bestandsverzoek nodig is. Dit werkt het best voor kleine bestanden, omdat grote bestanden de pagina opblazen en niet afzonderlijk kunnen worden gecachet.
  • API's en JSON. JSON heeft geen ingebouwde manier om onbewerkte binaire gegevens op te slaan, dus binaire bestanden die via een JSON-API worden verzonden, worden vaak eerst met Base64 gecodeerd.
  • HTTP Basic Authentication. De header Authorization codeert een gebruikersnaam en wachtwoord als Base64, bijvoorbeeld Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=. Dit is op zichzelf niet veilig; de inloggegevens kunnen worden gelezen door iedereen die ze onderschept. Basic Authentication mag daarom alleen via HTTPS worden gebruikt.
  • JSON Web Tokens (JWT). Elk van de drie delen van een JWT wordt gecodeerd met Base64URL, een variant die veilig in een URL kan worden geplaatst.
  • Binaire gegevens als tekst opslaan. Databases of configuratiebestanden die alleen tekst accepteren, bevatten soms binaire gegevens als een Base64-tekenreeks.

Base64 vergeleken met andere coderingen

URL-veilige Base64 vervangt de standaardtekens + en / door - en _, omdat + en / een speciale betekenis hebben in een URL. Deze variant wordt gebruikt voor JWT's, URL-queryparameters en bestandsnamen. Dit hulpprogramma produceert standaard-Base64-uitvoer; omzetten naar de URL-veilige vorm vereist alleen het verwisselen van die twee tekens.

Base32 gebruikt een alfabet van 32 tekens, zodat elk teken 5 bits bevat in plaats van 6. Het zet elke 5 bytes om in 8 tekens, een overhead van 60% (8 ÷ 5 = 1,6), tegenover 33% voor Base64. Base32 wordt gekozen wanneer de uitvoer met de hand moet worden overgetypt of telefonisch moet worden doorgegeven, omdat hoofdletters en kleine letters en gemakkelijk te verwarren tekens worden vermeden.

Hexadecimaal gebruikt 16 tekens (0–9, A–F) en heeft 2 tekens per byte nodig, waardoor de omvang verdubbelt (100% overhead). Het wordt vaak gebruikt voor het weergeven van hashes, kleuren en MAC-adressen, waarbij leesbaarheid belangrijker is dan een compacte omvang.

Wanneer Base64 niet moet worden gebruikt

Base64 vergroot de omvang en kost CPU-capaciteit, waardoor het minder geschikt is voor grote bestanden die via een netwerk worden verzonden; onbewerkte binaire gegevens rechtstreeks verzenden is kleiner en sneller. Base64 mag nooit worden gebruikt om gevoelige informatie zoals wachtwoorden of API-sleutels te verbergen, omdat voor decodering geen geheim nodig is. Voor het opslaan van grote bestanden is het binaire kolomtype van een database of een bestandsopslagdienst meestal beter dan een lange gecodeerde tekenreeks in een tekstveld.

Veelgemaakte fouten

  • UTF-8-conversie overslaan. Tekst met letters met accenten of emoji coderen zonder deze eerst om te zetten in UTF-8-bytes kan de uitvoer beschadigen.
  • Opvulling verwijderen. Sommige systemen verwijderen de afsluitende =-tekens. De meeste decoders werken nog steeds als de tekenreekslengte weer wordt aangevuld tot een veelvoud van 4, maar niet alle decoders accepteren dit. Daarom is het veiliger de opvulling te behouden.
  • Overgebleven regeleinden. Oudere MIME-gebaseerde encoders voegen elke 76 tekens een regeleinde in; de meeste moderne decoders verwachten één doorlopende tekenreeks zonder regeleinden.
  • Varianten door elkaar halen. Standaard-Base64 en URL-veilige Base64 gebruiken verschillende tekens voor dezelfde twee posities in het alfabet; decoderen met de verkeerde variant levert onleesbare gegevens of een fout op.

Veelgestelde vragen

Is Base64 een vorm van versleuteling? Nee. Het is een omkeerbare tekstcodering, geen versleuteling. Iedereen kan een Base64-tekenreeks onmiddellijk decoderen zonder wachtwoord. Gebruik een versleutelingsalgoritme zoals AES als gegevens geheim moeten blijven.

Waarom maakt Base64 gegevens groter? Omdat één volledig teken slechts 6 bits bevat, terwijl een onbewerkte byte 8 bits bevat. Door 3 bytes (24 bits) om te zetten in 4 tekens, is de uitvoer 4/3, oftewel ongeveer 33%, groter dan de invoer.

Kan Base64 afbeeldingen en andere binaire bestanden coderen? Ja. Elk binair bestand, waaronder afbeeldingen, pdf-bestanden en audio, kan met Base64 worden gecodeerd en byte voor byte weer worden gedecodeerd. Het wordt vaak gebruikt voor kleine afbeeldingen die in HTML of CSS zijn ingesloten, maar is een slechte keuze voor grote bestanden.

Wat is het verschil tussen Base64 en Base64URL? Base64URL verwisselt de standaardtekens + en / voor - en _, zodat het resultaat zonder extra escaping veilig in een URL of bestandsnaam kan worden geplaatst. JWT's gebruiken Base64URL om deze reden.

Waarom geeft mijn Base64-tekenreeks bij het decoderen een foutmelding "ongeldig"? De meest voorkomende oorzaken zijn tekens die niet tot het Base64-alfabet behoren, zoals - en _ van de URL-veilige variant, of een tekenreeks waarvan de lengte één groter is dan een veelvoud van 4. Geen enkele geldige Base64-tekenreeks heeft die lengte. Decoderen mislukt ook wanneer de gedecodeerde bytes geen geldige UTF-8-tekst vormen. Dit hulpprogramma negeert spaties en regeleinden in de tekenreeks en decodeert ook een tekenreeks waarvan de afsluitende =-opvulling is verwijderd.

Waar komt Base64 vandaan? De techniek gaat terug tot vroege methoden om binaire gegevens via tekstgebaseerde mailsystemen te verzenden in de 1980s en werd in RFC 2045 in 1996 formeel gestandaardiseerd als onderdeel van MIME. De huidige referentiespecificatie voor Base64, Base32 en Base16 is RFC 4648.