Base64 Encoder en Decoder: Zet tekst om naar/van Base64
Gratis online tool om tekst naar Base64 te coderen of Base64-strings terug te decoderen naar tekst. Ondersteunt standaard en URL-veilige Base64-codering met directe conversie.
Base64 Encoder/Decoder
Zet tekst om naar en van Base64-codering
Documentatie
Base64 Encoder en Decoder
Inleiding
Base64 is een binaire-naar-tekst codering schema dat binaire gegevens voorstelt in een ASCII tekenreeks formaat. Het is ontworpen om gegevens die zijn opgeslagen in binaire formaten over te dragen via kanalen die alleen betrouwbaar tekstinhoud ondersteunen. Base64 codering converteert binaire gegevens in een set van 64 tekens (vandaar de naam) die veilig kunnen worden verzonden via tekstgebaseerde protocollen zonder gegevenscorruptie.
De Base64 tekenreeks bestaat uit:
- Hoofdletters A-Z (26 tekens)
- Kleine letters a-z (26 tekens)
- Cijfers 0-9 (10 tekens)
- Twee extra tekens, meestal "+" en "/" (2 tekens)
Deze tool stelt je in staat om eenvoudig tekst naar Base64 formaat te coderen of Base64 tekenreeksen terug te decoderen naar hun oorspronkelijke tekst. Het is bijzonder nuttig voor ontwikkelaars, IT-professionals en iedereen die werkt met gegevens die veilig moeten worden verzonden via tekstgebaseerde kanalen.
Hoe Base64 Codering Werkt
Codering Proces
Base64 codering werkt door elke groep van drie bytes (24 bits) binaire gegevens om te zetten in vier Base64 tekens. Het proces volgt deze stappen:
- Converteer de invoertekst naar zijn binaire representatie (met behulp van ASCII of UTF-8 codering)
- Groepeer de binaire gegevens in stukken van 24 bits (3 bytes)
- Splits elke 24-bits chunk in vier 6-bits groepen
- Converteer elke 6-bits groep naar het bijbehorende Base64 teken
Wanneer de invoerlengte niet deelbaar is door 3, wordt er padding toegevoegd met "=" tekens om de 4:3 verhouding van uitvoer naar invoerlengtes te behouden.
Wiskundige Representatie
Voor een reeks bytes , worden de overeenkomstige Base64 tekens berekend als:
Waar het -de teken in het Base64 alfabet vertegenwoordigt.
Decodering Proces
Base64 decodering keert het codering proces om:
- Converteer elk Base64 teken naar zijn 6-bits waarde
- Concateneer deze 6-bits waarden
- Groepeer de bits in 8-bits stukken (bytes)
- Converteer elke byte naar het bijbehorende teken
Padding
Wanneer het aantal bytes dat gecodeerd moet worden niet deelbaar is door 3, wordt padding toegepast:
- Als er één byte overblijft, wordt deze omgezet in twee Base64 tekens gevolgd door "=="
- Als er twee bytes overblijven, worden ze omgezet in drie Base64 tekens gevolgd door "="
Voorbeeld
Laten we de tekst "Hallo" naar Base64 coderen:
- ASCII representatie van "Hallo": 72 101 108 108 111
- Binaire representatie: 01001000 01100101 01101100 01101100 01101111
- Groeperen in 6-bits chunks: 010010 000110 010101 101100 011011 000110 1111
- De laatste chunk heeft slechts 4 bits, dus we vullen aan met nullen: 010010 000110 010101 101100 011011 000110 111100
- Omzetten naar decimaal: 18, 6, 21, 44, 27, 6, 60
- Opzoeken in het Base64 alfabet: S, G, V, s, b, G, 8
- Het resultaat is "SGVsbG8="
Let op de "=" padding aan het einde omdat de invoerlengte (5 bytes) niet deelbaar is door 3.
Formule
De algemene formule voor het berekenen van de lengte van een Base64 gecodeerde tekenreeks is:
Waar de plafondfunctie vertegenwoordigt (afgerond naar het dichtstbijzijnde gehele getal).
Toepassingen
Base64 codering wordt op grote schaal gebruikt in verschillende toepassingen:
-
E-mailbijlagen: MIME (Multipurpose Internet Mail Extensions) gebruikt Base64 om binaire bijlagen in e-mail te coderen.
-
Data-URL's: Kleine afbeeldingen, lettertypen of andere bronnen direct in HTML, CSS of JavaScript insluiten met behulp van het
data:
URL-schema. -
API-communicatie: Veilig verzenden van binaire gegevens in JSON-payloads of andere tekstgebaseerde API-formaten.
-
Opslaan van Binaire Gegevens in Tekstformaten: Wanneer binaire gegevens moeten worden opgeslagen in XML, JSON of andere tekstgebaseerde formaten.
-
Authentificatiesystemen: Basisauthenticatie in HTTP gebruikt Base64 codering (hoewel het niet voor beveiliging is, alleen voor codering).
-
Cryptografie: Als onderdeel van verschillende cryptografische protocollen en systemen, vaak voor het coderen van sleutels of certificaten.
-
Cookie-waarden: Complexe datastructuren coderen om in cookies op te slaan.
Alternatieven
Hoewel Base64 veel wordt gebruikt, zijn er alternatieven die in bepaalde situaties geschikter kunnen zijn:
-
URL-veilige Base64: Een variant die "-" en "_" gebruikt in plaats van "+" en "/" om problemen met URL-codering te vermijden. Nuttig voor gegevens die in URL's moeten worden opgenomen.
-
Base32: Gebruikt een 32-teken set, wat resulteert in een langere uitvoer maar met betere leesbaarheid en hoofdlettergevoeligheid.
-
Hex Codering: Eenvoudige conversie naar hexadecimaal, wat minder efficiënt is (verdubbelt de grootte) maar heel eenvoudig en breed ondersteund.
-
Binaire Overdracht: Voor grote bestanden of wanneer efficiëntie cruciaal is, zijn directe binaire overdracht protocollen zoals HTTP met de juiste Content-Type headers te verkiezen.
-
Compressie + Base64: Voor grote tekstgegevens kan compressie vóór codering de groottevergroting verminderen.
-
JSON/XML Serialisatie: Voor gestructureerde gegevens kan het gebruik van native JSON of XML serialisatie geschikter zijn dan Base64 codering.
Geschiedenis
Base64 codering heeft zijn oorsprong in vroege computer- en telecommunicatiesystemen waar binaire gegevens over kanalen moesten worden verzonden die voor tekst waren ontworpen.
De formele specificatie van Base64 werd voor het eerst gepubliceerd in 1987 als onderdeel van RFC 989, dat Privacy Enhanced Mail (PEM) definieerde. Dit werd later bijgewerkt in RFC 1421 (1993) en RFC 2045 (1996, als onderdeel van MIME).
De term "Base64" komt van het feit dat de codering 64 verschillende ASCII-tekens gebruikt om binaire gegevens voor te stellen. Deze keuze van 64 tekens was opzettelijk, omdat 64 een macht van 2 is (2^6), wat de conversie tussen binaire en Base64 efficiënt maakt.
In de loop der tijd zijn er verschillende varianten van Base64 ontstaan:
- Standaard Base64: Zoals gedefinieerd in RFC 4648, met gebruik van A-Z, a-z, 0-9, +, / en = voor padding
- URL-veilige Base64: Gebruikt - en _ in plaats van + en / om problemen met URL-codering te vermijden
- Bestandsnaam-veilige Base64: Vergelijkbaar met URL-veilige, ontworpen voor gebruik in bestandsnamen
- Aangepaste Base64 voor IMAP: Gebruikt in het IMAP-protocol met een andere set speciale tekens
Ondanks dat het meer dan drie decennia oud is, blijft Base64 een fundamenteel hulpmiddel in de moderne informatica, vooral met de opkomst van webapplicaties en API's die sterk afhankelijk zijn van tekstgebaseerde gegevensformaten zoals JSON.
Code Voorbeelden
Hier zijn voorbeelden van Base64 codering en decodering in verschillende programmeertalen:
1// JavaScript Base64 Codering/Decodering
2function encodeToBase64(text) {
3 return btoa(text);
4}
5
6function decodeFromBase64(base64String) {
7 try {
8 return atob(base64String);
9 } catch (e) {
10 throw new Error("Ongeldige Base64 tekenreeks");
11 }
12}
13
14// Voorbeeld gebruik
15const originalText = "Hallo, Wereld!";
16const encoded = encodeToBase64(originalText);
17console.log("Gecodeerd:", encoded); // SGVsbG8sIFdvcmxkIQ==
18
19try {
20 const decoded = decodeFromBase64(encoded);
21 console.log("Gedecodeerd:", decoded); // Hallo, Wereld!
22} catch (error) {
23 console.error(error.message);
24}
25
1# Python Base64 Codering/Decodering
2import base64
3
4def encode_to_base64(text):
5 # Converteer string naar bytes en encode
6 text_bytes = text.encode('utf-8')
7 base64_bytes = base64.b64encode(text_bytes)
8 return base64_bytes.decode('utf-8')
9
10def decode_from_base64(base64_string):
11 try:
12 # Converteer base64 string naar bytes en decode
13 base64_bytes = base64_string.encode('utf-8')
14 text_bytes = base64.b64decode(base64_bytes)
15 return text_bytes.decode('utf-8')
16 except Exception as e:
17 raise ValueError(f"Ongeldige Base64 tekenreeks: {e}")
18
19# Voorbeeld gebruik
20original_text = "Hallo, Wereld!"
21encoded = encode_to_base64(original_text)
22print(f"Gecodeerd: {encoded}") # SGVsbG8sIFdvcmxkIQ==
23
24try:
25 decoded = decode_from_base64(encoded)
26 print(f"Gedecodeerd: {decoded}") # Hallo, Wereld!
27except ValueError as e:
28 print(e)
29
1// Java Base64 Codering/Decodering
2import java.util.Base64;
3import java.nio.charset.StandardCharsets;
4
5public class Base64Example {
6 public static String encodeToBase64(String text) {
7 byte[] textBytes = text.getBytes(StandardCharsets.UTF_8);
8 byte[] encodedBytes = Base64.getEncoder().encode(textBytes);
9 return new String(encodedBytes, StandardCharsets.UTF_8);
10 }
11
12 public static String decodeFromBase64(String base64String) {
13 try {
14 byte[] base64Bytes = base64String.getBytes(StandardCharsets.UTF_8);
15 byte[] decodedBytes = Base64.getDecoder().decode(base64Bytes);
16 return new String(decodedBytes, StandardCharsets.UTF_8);
17 } catch (IllegalArgumentException e) {
18 throw new IllegalArgumentException("Ongeldige Base64 tekenreeks: " + e.getMessage());
19 }
20 }
21
22 public static void main(String[] args) {
23 String originalText = "Hallo, Wereld!";
24 String encoded = encodeToBase64(originalText);
25 System.out.println("Gecodeerd: " + encoded); // SGVsbG8sIFdvcmxkIQ==
26
27 try {
28 String decoded = decodeFromBase64(encoded);
29 System.out.println("Gedecodeerd: " + decoded); // Hallo, Wereld!
30 } catch (IllegalArgumentException e) {
31 System.err.println(e.getMessage());
32 }
33 }
34}
35
1<?php
2// PHP Base64 Codering/Decodering
3function encodeToBase64($text) {
4 return base64_encode($text);
5}
6
7function decodeFromBase64($base64String) {
8 $decoded = base64_decode($base64String, true);
9 if ($decoded === false) {
10 throw new Exception("Ongeldige Base64 tekenreeks");
11 }
12 return $decoded;
13}
14
15// Voorbeeld gebruik
16$originalText = "Hallo, Wereld!";
17$encoded = encodeToBase64($originalText);
18echo "Gecodeerd: " . $encoded . "\n"; // SGVsbG8sIFdvcmxkIQ==
19
20try {
21 $decoded = decodeFromBase64($encoded);
22 echo "Gedecodeerd: " . $decoded . "\n"; // Hallo, Wereld!
23} catch (Exception $e) {
24 echo "Fout: " . $e->getMessage() . "\n";
25}
26?>
27
1// C# Base64 Codering/Decodering
2using System;
3using System.Text;
4
5class Base64Example
6{
7 public static string EncodeToBase64(string text)
8 {
9 byte[] textBytes = Encoding.UTF8.GetBytes(text);
10 return Convert.ToBase64String(textBytes);
11 }
12
13 public static string DecodeFromBase64(string base64String)
14 {
15 try
16 {
17 byte[] base64Bytes = Convert.FromBase64String(base64String);
18 return Encoding.UTF8.GetString(base64Bytes);
19 }
20 catch (FormatException)
21 {
22 throw new FormatException("Ongeldige Base64 tekenreeks");
23 }
24 }
25
26 static void Main()
27 {
28 string originalText = "Hallo, Wereld!";
29 string encoded = EncodeToBase64(originalText);
30 Console.WriteLine($"Gecodeerd: {encoded}"); // SGVsbG8sIFdvcmxkIQ==
31
32 try
33 {
34 string decoded = DecodeFromBase64(encoded);
35 Console.WriteLine($"Gedecodeerd: {decoded}"); // Hallo, Wereld!
36 }
37 catch (FormatException e)
38 {
39 Console.WriteLine($"Fout: {e.Message}");
40 }
41 }
42}
43
1# Ruby Base64 Codering/Decodering
2require 'base64'
3
4def encode_to_base64(text)
5 Base64.strict_encode64(text)
6end
7
8def decode_from_base64(base64_string)
9 begin
10 Base64.strict_decode64(base64_string)
11 rescue ArgumentError => e
12 raise "Ongeldige Base64 tekenreeks: #{e.message}"
13 end
14end
15
16# Voorbeeld gebruik
17original_text = "Hallo, Wereld!"
18encoded = encode_to_base64(original_text)
19puts "Gecodeerd: #{encoded}" # SGVsbG8sIFdvcmxkIQ==
20
21begin
22 decoded = decode_from_base64(encoded)
23 puts "Gedecodeerd: #{decoded}" # Hallo, Wereld!
24rescue StandardError => e
25 puts "Fout: #{e.message}"
26end
27
1// Go Base64 Codering/Decodering
2package main
3
4import (
5 "encoding/base64"
6 "fmt"
7)
8
9func encodeToBase64(text string) string {
10 return base64.StdEncoding.EncodeToString([]byte(text))
11}
12
13func decodeFromBase64(base64String string) (string, error) {
14 bytes, err := base64.StdEncoding.DecodeString(base64String)
15 if err != nil {
16 return "", fmt.Errorf("ongeldige Base64 tekenreeks: %v", err)
17 }
18 return string(bytes), nil
19}
20
21func main() {
22 originalText := "Hallo, Wereld!"
23 encoded := encodeToBase64(originalText)
24 fmt.Println("Gecodeerd:", encoded) // SGVsbG8sIFdvcmxkIQ==
25
26 decoded, err := decodeFromBase64(encoded)
27 if err != nil {
28 fmt.Println("Fout:", err)
29 } else {
30 fmt.Println("Gedecodeerd:", decoded) // Hallo, Wereld!
31 }
32}
33
1// Swift Base64 Codering/Decodering
2import Foundation
3
4func encodeToBase64(_ text: String) -> String? {
5 if let data = text.data(using: .utf8) {
6 return data.base64EncodedString()
7 }
8 return nil
9}
10
11func decodeFromBase64(_ base64String: String) -> String? {
12 if let data = Data(base64Encoded: base64String) {
13 return String(data: data, encoding: .utf8)
14 }
15 return nil
16}
17
18// Voorbeeld gebruik
19let originalText = "Hallo, Wereld!"
20if let encoded = encodeToBase64(originalText) {
21 print("Gecodeerd: \(encoded)") // SGVsbG8sIFdvcmxkIQ==
22
23 if let decoded = decodeFromBase64(encoded) {
24 print("Gedecodeerd: \(decoded)") // Hallo, Wereld!
25 } else {
26 print("Fout: Kon Base64 tekenreeks niet decoderen")
27 }
28} else {
29 print("Fout: Kon tekst niet coderen")
30}
31
1' Excel VBA Base64 Codering/Decodering
2' Opmerking: Dit vereist een referentie naar Microsoft XML, v6.0
3Function EncodeToBase64(text As String) As String
4 Dim xmlObj As Object
5 Set xmlObj = CreateObject("MSXML2.DOMDocument")
6
7 Dim xmlNode As Object
8 Set xmlNode = xmlObj.createElement("b64")
9
10 xmlNode.DataType = "bin.base64"
11 xmlNode.nodeTypedValue = StrConv(text, vbFromUnicode)
12
13 EncodeToBase64 = xmlNode.text
14
15 Set xmlNode = Nothing
16 Set xmlObj = Nothing
17End Function
18
19Function DecodeFromBase64(base64String As String) As String
20 On Error GoTo ErrorHandler
21
22 Dim xmlObj As Object
23 Set xmlObj = CreateObject("MSXML2.DOMDocument")
24
25 Dim xmlNode As Object
26 Set xmlNode = xmlObj.createElement("b64")
27
28 xmlNode.DataType = "bin.base64"
29 xmlNode.text = base64String
30
31 DecodeFromBase64 = StrConv(xmlNode.nodeTypedValue, vbUnicode)
32
33 Set xmlNode = Nothing
34 Set xmlObj = Nothing
35 Exit Function
36
37ErrorHandler:
38 DecodeFromBase64 = "Fout: Ongeldige Base64 tekenreeks"
39End Function
40
41' Gebruik in een werkblad:
42' =EncodeToBase64("Hallo, Wereld!")
43' =DecodeFromBase64("SGVsbG8sIFdvcmxkIQ==")
44
1# R Base64 Codering/Decodering
2# Vereist het 'base64enc' pakket
3# install.packages("base64enc")
4library(base64enc)
5
6encode_to_base64 <- function(text) {
7 # Converteer tekst naar ruwe bytes, dan coderen
8 text_raw <- charToRaw(text)
9 base64_encoded <- base64encode(text_raw)
10 return(rawToChar(base64_encoded))
11}
12
13decode_from_base64 <- function(base64_string) {
14 tryCatch({
15 # Converteer base64 tekenreeks naar ruwe, dan decoderen
16 base64_raw <- charToRaw(base64_string)
17 decoded_raw <- base64decode(base64_raw)
18 return(rawToChar(decoded_raw))
19 }, error = function(e) {
20 stop(paste("Ongeldige Base64 tekenreeks:", e$message))
21 })
22}
23
24# Voorbeeld gebruik
25original_text <- "Hallo, Wereld!"
26encoded <- encode_to_base64(original_text)
27cat("Gecodeerd:", encoded, "\n") # SGVsbG8sIFdvcmxkIQ==
28
29tryCatch({
30 decoded <- decode_from_base64(encoded)
31 cat("Gedecodeerd:", decoded, "\n") # Hallo, Wereld!
32}, error = function(e) {
33 cat("Fout:", e$message, "\n")
34})
35
1% MATLAB Base64 Codering/Decodering
2function demo_base64()
3 originalText = 'Hallo, Wereld!';
4
5 % Coderen
6 encoded = encode_to_base64(originalText);
7 fprintf('Gecodeerd: %s\n', encoded); % SGVsbG8sIFdvcmxkIQ==
8
9 % Decoderen
10 try
11 decoded = decode_from_base64(encoded);
12 fprintf('Gedecodeerd: %s\n', decoded); % Hallo, Wereld!
13 catch e
14 fprintf('Fout: %s\n', e.message);
15 end
16end
17
18function encoded = encode_to_base64(text)
19 % Converteer tekst naar uint8 array en coderen
20 bytes = uint8(text);
21 encoded = base64encode(bytes);
22end
23
24function decoded = decode_from_base64(base64String)
25 try
26 % Decodeer base64 tekenreeks naar uint8 array
27 bytes = base64decode(base64String);
28 decoded = char(bytes);
29 catch
30 error('Ongeldige Base64 tekenreeks');
31 end
32end
33
1// C Base64 Codering/Decodering met OpenSSL
2#include <stdio.h>
3#include <string.h>
4#include <openssl/bio.h>
5#include <openssl/evp.h>
6#include <openssl/buffer.h>
7#include <stdint.h>
8
9char* encode_to_base64(const char* input) {
10 BIO *bio, *b64;
11 BUF_MEM *bufferPtr;
12
13 b64 = BIO_new(BIO_f_base64());
14 bio = BIO_new(BIO_s_mem());
15 bio = BIO_push(b64, bio);
16
17 BIO_set_flags(bio, BIO_FLAGS_BASE64_NO_NL);
18 BIO_write(bio, input, strlen(input));
19 BIO_flush(bio);
20 BIO_get_mem_ptr(bio, &bufferPtr);
21
22 char* result = (char*)malloc(bufferPtr->length + 1);
23 memcpy(result, bufferPtr->data, bufferPtr->length);
24 result[bufferPtr->length] = '\0';
25
26 BIO_free_all(bio);
27
28 return result;
29}
30
31char* decode_from_base64(const char* input) {
32 BIO *bio, *b64;
33 size_t length = strlen(input);
34 char* buffer = (char*)malloc(length);
35
36 b64 = BIO_new(BIO_f_base64());
37 bio = BIO_new_mem_buf(input, -1);
38 bio = BIO_push(b64, bio);
39
40 BIO_set_flags(bio, BIO_FLAGS_BASE64_NO_NL);
41 int decoded_length = BIO_read(bio, buffer, length);
42
43 if (decoded_length <= 0) {
44 free(buffer);
45 BIO_free_all(bio);
46 return NULL; // Ongeldige Base64 invoer
47 }
48
49 buffer[decoded_length] = '\0';
50
51 BIO_free_all(bio);
52
53 return buffer;
54}
55
56int main() {
57 const char* original_text = "Hallo, Wereld!";
58
59 char* encoded = encode_to_base64(original_text);
60 printf("Gecodeerd: %s\n", encoded); // SGVsbG8sIFdvcmxkIQ==
61
62 char* decoded = decode_from_base64(encoded);
63 if (decoded) {
64 printf("Gedecodeerd: %s\n", decoded); // Hallo, Wereld!
65 free(decoded);
66 } else {
67 printf("Fout: Ongeldige Base64 tekenreeks\n");
68 }
69
70 free(encoded);
71
72 return 0;
73}
74
1// Rust Base64 Codering/Decodering
2use base64::{encode, decode};
3use std::str;
4
5fn encode_to_base64(text: &str) -> String {
6 encode(text)
7}
8
9fn decode_from_base64(base64_string: &str) -> Result<String, String> {
10 match decode(base64_string) {
11 Ok(bytes) => {
12 match str::from_utf8(&bytes) {
13 Ok(text) => Ok(text.to_string()),
14 Err(e) => Err(format!("Ongeldige UTF-8 reeks: {}", e))
15 }
16 },
17 Err(e) => Err(format!("Ongeldige Base64 tekenreeks: {}", e))
18 }
19}
20
21fn main() {
22 let original_text = "Hallo, Wereld!";
23 let encoded = encode_to_base64(original_text);
24 println!("Gecodeerd: {}", encoded); // SGVsbG8sIFdvcmxkIQ==
25
26 match decode_from_base64(&encoded) {
27 Ok(decoded) => println!("Gedecodeerd: {}", decoded), // Hallo, Wereld!
28 Err(e) => println!("Fout: {}", e)
29 }
30}
31
Randgevallen en Overwegingen
Bij het werken met Base64 codering en decodering, wees je bewust van deze belangrijke overwegingen:
-
Unicode en Niet-ASCII Tekens: Bij het coderen van tekst met niet-ASCII tekens, zorg voor de juiste tekencodering (meestal UTF-8) vóór Base64 codering.
-
Padding: Standaard Base64 gebruikt padding met "=" tekens om ervoor te zorgen dat de uitvoerlengte een veelvoud van 4 is. Sommige implementaties staan het weglaten van padding toe, wat compatibiliteitsproblemen kan veroorzaken.
-
Regelafbrekingen: Traditionele Base64 implementaties voegen regelafbrekingen in (meestal elke 76 tekens) voor leesbaarheid, maar moderne toepassingen omzeilen deze vaak.
-
URL-Veilige Base64: Standaard Base64 gebruikt "+" en "/" tekens die speciale betekenissen hebben in URL's. Voor URL-contexten, gebruik URL-veilige Base64 die deze vervangt door "-" en "_".
-
Witruimte: Bij decoderen zijn sommige implementaties soepel en negeren ze witruimte, terwijl andere exacte invoer vereisen.
-
Grootte Verhoging: Base64 codering verhoogt de grootte van gegevens met ongeveer 33% (4 uitvoerbytes voor elke 3 invoerbytes).
-
Prestaties: Base64 codering/decodering kan rekenintensief zijn voor zeer grote gegevens. Overweeg streaming benaderingen voor grote bestanden.
Referenties
Feedback
Klik op de feedback toast om feedback te geven over deze tool
Gerelateerde Tools
Ontdek meer tools die nuttig kunnen zijn voor jouw workflow