Whiz Tools

Base64 Encoder/Decoder

Text in und aus Base64-Codierung konvertieren

Kopieren

Base64 Encoder und Decoder

Einführung

Base64 ist ein Binär-zu-Text-Codierungschema, das Binärdaten in einem ASCII-Zeichenformat darstellt. Es wurde entwickelt, um Daten, die in Binärformaten gespeichert sind, über Kanäle zu übertragen, die nur zuverlässig Textinhalte unterstützen. Die Base64-Codierung konvertiert Binärdaten in eine Menge von 64 Zeichen (daher der Name), die sicher über textbasierte Protokolle ohne Datenkorruption übertragen werden können.

Der Base64-Zeichensatz besteht aus:

  • Großbuchstaben A-Z (26 Zeichen)
  • Kleinbuchstaben a-z (26 Zeichen)
  • Ziffern 0-9 (10 Zeichen)
  • Zwei zusätzliche Zeichen, typischerweise "+" und "/" (2 Zeichen)

Dieses Tool ermöglicht es Ihnen, Text einfach in das Base64-Format zu codieren oder Base64-Zeichenfolgen zurück in ihren ursprünglichen Text zu decodieren. Es ist besonders nützlich für Entwickler, IT-Profis und jeden, der mit Daten arbeitet, die sicher über textbasierte Kanäle übertragen werden müssen.

Wie Base64-Codierung funktioniert

Codierungsprozess

Die Base64-Codierung funktioniert, indem jede Gruppe von drei Bytes (24 Bit) Binärdaten in vier Base64-Zeichen umgewandelt wird. Der Prozess folgt diesen Schritten:

  1. Konvertieren Sie den Eingabetext in seine binäre Darstellung (unter Verwendung von ASCII oder UTF-8-Codierung)
  2. Gruppieren Sie die Binärdaten in Blöcke von 24 Bit (3 Bytes)
  3. Teilen Sie jeden 24-Bit-Block in vier 6-Bit-Gruppen auf
  4. Konvertieren Sie jede 6-Bit-Gruppe in ihr entsprechendes Base64-Zeichen

Wenn die Eingabelänge nicht durch 3 teilbar ist, wird mit "="-Zeichen aufgefüllt, um das Verhältnis von 4:3 zwischen Ausgaben- und Eingabelängen aufrechtzuerhalten.

Mathematische Darstellung

Für eine Byte-Sequenz b1,b2,b3b_1, b_2, b_3 werden die entsprechenden Base64-Zeichen c1,c2,c3,c4c_1, c_2, c_3, c_4 wie folgt berechnet:

c1=Base64[(b1>>2)]c_1 = \text{Base64}[(b_1 >> 2)]
c2=Base64[((b1&3)<<4)(b2>>4)]c_2 = \text{Base64}[((b_1 \& 3) << 4) | (b_2 >> 4)]
c3=Base64[((b2&15)<<2)(b3>>6)]c_3 = \text{Base64}[((b_2 \& 15) << 2) | (b_3 >> 6)]
c4=Base64[(b3&63)]c_4 = \text{Base64}[(b_3 \& 63)]

Wobei Base64[i]\text{Base64}[i] das ii-te Zeichen im Base64-Alphabet darstellt.

Decodierungsprozess

Die Base64-Decodierung kehrt den Codierungsprozess um:

  1. Konvertieren Sie jedes Base64-Zeichen in seinen 6-Bit-Wert
  2. Verketten Sie diese 6-Bit-Werte
  3. Gruppieren Sie die Bits in 8-Bit-Blöcke (Bytes)
  4. Konvertieren Sie jedes Byte in sein entsprechendes Zeichen

Auffüllung

Wenn die zu codierende Anzahl von Bytes nicht durch 3 teilbar ist, wird Auffüllung angewendet:

  • Wenn ein Byte übrig bleibt, wird es in zwei Base64-Zeichen umgewandelt, gefolgt von "=="
  • Wenn zwei Bytes übrig bleiben, werden sie in drei Base64-Zeichen umgewandelt, gefolgt von "="

Beispiel

Lassen Sie uns den Text "Hallo" in Base64 codieren:

  1. ASCII-Darstellung von "Hallo": 72 101 108 108 111
  2. Binäre Darstellung: 01001000 01100101 01101100 01101100 01101111
  3. Gruppierung in 6-Bit-Chunks: 010010 000110 010101 101100 011011 000110 1111
  4. Der letzte Chunk hat nur 4 Bits, also fügen wir Nullen hinzu: 010010 000110 010101 101100 011011 000110 111100
  5. Umwandlung in Dezimal: 18, 6, 21, 44, 27, 6, 60
  6. Nachschlagen im Base64-Alphabet: S, G, V, s, b, G, 8
  7. Das Ergebnis ist "SGVsbG8="

Beachten Sie die "=" Auffüllung am Ende, da die Eingabelänge (5 Bytes) nicht durch 3 teilbar ist.

Formel

Die allgemeine Formel zur Berechnung der Länge einer Base64-codierten Zeichenfolge lautet:

encoded_length=4×input_length3\text{encoded\_length} = 4 \times \lceil \frac{\text{input\_length}}{3} \rceil

Wobei x\lceil x \rceil die Aufrundungsfunktion (Aufrundung auf die nächste ganze Zahl) darstellt.

Anwendungsfälle

Die Base64-Codierung wird in verschiedenen Anwendungen häufig verwendet:

  1. E-Mail-Anhänge: MIME (Multipurpose Internet Mail Extensions) verwendet Base64 zur Codierung binärer Anhänge in E-Mails.

  2. Daten-URLs: Einbetten kleiner Bilder, Schriftarten oder anderer Ressourcen direkt in HTML, CSS oder JavaScript unter Verwendung des data: URL-Schemas.

  3. API-Kommunikation: Sicheres Übertragen von Binärdaten in JSON-Nutzlasten oder anderen textbasierten API-Formaten.

  4. Speichern von Binärdaten in Textformaten: Wenn Binärdaten in XML, JSON oder anderen textbasierten Formaten gespeichert werden müssen.

  5. Authentifizierungssysteme: Die grundlegende Authentifizierung in HTTP verwendet Base64-Codierung (obwohl es nicht um Sicherheit geht, sondern um Codierung).

  6. Kryptografie: Als Teil verschiedener kryptografischer Protokolle und Systeme, oft zur Codierung von Schlüsseln oder Zertifikaten.

  7. Cookie-Werte: Codierung komplexer Datenstrukturen, die in Cookies gespeichert werden sollen.

Alternativen

Obwohl Base64 weit verbreitet ist, gibt es Alternativen, die in bestimmten Situationen geeigneter sein könnten:

  1. URL-sichere Base64: Eine Variante, die "-" und "_" anstelle von "+" und "/" verwendet, um Probleme mit der URL-Codierung zu vermeiden. Nützlich für Daten, die in URLs enthalten sein sollen.

  2. Base32: Verwendet ein 32-Zeichen-Set, was zu einer längeren Ausgabe führt, aber eine bessere Lesbarkeit und Fallunempfindlichkeit bietet.

  3. Hex-Codierung: Einfache Umwandlung in Hexadezimal, die weniger effizient ist (verdoppelt die Größe), aber sehr einfach und weit verbreitet unterstützt wird.

  4. Binärübertragung: Für große Dateien oder wenn Effizienz entscheidend ist, sind direkte binäre Übertragungsprotokolle wie HTTP mit geeigneten Content-Type-Headern vorzuziehen.

  5. Kompression + Base64: Bei großen Textdaten kann das Komprimieren vor der Codierung die Größensteigerung verringern.

  6. JSON/XML-Serialisierung: Für strukturierte Daten könnte die Verwendung der nativen JSON- oder XML-Serialisierung geeigneter sein als die Base64-Codierung.

Geschichte

Die Base64-Codierung hat ihre Wurzeln in den frühen Computer- und Telekommunikationssystemen, in denen Binärdaten über Kanäle übertragen werden mussten, die für Text ausgelegt waren.

Die formale Spezifikation von Base64 wurde erstmals 1987 im RFC 989 veröffentlicht, das Privacy Enhanced Mail (PEM) definierte. Dies wurde später im RFC 1421 (1993) und RFC 2045 (1996, als Teil von MIME) aktualisiert.

Der Begriff "Base64" stammt daher, dass die Codierung 64 verschiedene ASCII-Zeichen verwendet, um Binärdaten darzustellen. Diese Wahl von 64 Zeichen war absichtlich, da 64 eine Potenz von 2 ist (2^6), was die Umwandlung zwischen Binär- und Base64 effizient macht.

Im Laufe der Zeit sind mehrere Varianten von Base64 entstanden:

  • Standard Base64: Wie im RFC 4648 definiert, verwendet A-Z, a-z, 0-9, +, / und = zur Auffüllung
  • URL-sichere Base64: Verwendet - und _ anstelle von + und /, um Probleme mit der URL-Codierung zu vermeiden
  • Dateiname-sichere Base64: Ähnlich wie URL-sichere, für die Verwendung in Dateinamen entwickelt
  • Modifizierte Base64 für IMAP: Wird im IMAP-Protokoll mit einem anderen Satz von Sonderzeichen verwendet

Trotz seines über drei Jahrzehnten alten Bestehens bleibt Base64 ein grundlegendes Werkzeug in der modernen Informatik, insbesondere mit dem Aufkommen von Webanwendungen und APIs, die stark auf textbasierte Datenformate wie JSON angewiesen sind.

Codebeispiele

Hier sind Beispiele für Base64-Codierung und -Decodierung in verschiedenen Programmiersprachen:

// JavaScript Base64 Codierung/Dekodierung
function encodeToBase64(text) {
  return btoa(text);
}

function decodeFromBase64(base64String) {
  try {
    return atob(base64String);
  } catch (e) {
    throw new Error("Ungültige Base64-Zeichenfolge");
  }
}

// Beispielverwendung
const originalText = "Hallo, Welt!";
const encoded = encodeToBase64(originalText);
console.log("Codiert:", encoded);  // SGVsbG8sIFdvcmxkIQ==

try {
  const decoded = decodeFromBase64(encoded);
  console.log("Dekodiert:", decoded);  // Hallo, Welt!
} catch (error) {
  console.error(error.message);
}
# Python Base64 Codierung/Dekodierung
import base64

def encode_to_base64(text):
    # Konvertieren Sie den String in Bytes und codieren Sie ihn
    text_bytes = text.encode('utf-8')
    base64_bytes = base64.b64encode(text_bytes)
    return base64_bytes.decode('utf-8')

def decode_from_base64(base64_string):
    try:
        # Konvertieren Sie die Base64-Zeichenfolge in Bytes und dekodieren Sie sie
        base64_bytes = base64_string.encode('utf-8')
        text_bytes = base64.b64decode(base64_bytes)
        return text_bytes.decode('utf-8')
    except Exception as e:
        raise ValueError(f"Ungültige Base64-Zeichenfolge: {e}")

# Beispielverwendung
original_text = "Hallo, Welt!"
encoded = encode_to_base64(original_text)
print(f"Codiert: {encoded}")  # SGVsbG8sIFdvcmxkIQ==

try:
    decoded = decode_from_base64(encoded)
    print(f"Dekodiert: {decoded}")  # Hallo, Welt!
except ValueError as e:
    print(e)
// Java Base64 Codierung/Dekodierung
import java.util.Base64;
import java.nio.charset.StandardCharsets;

public class Base64Beispiel {
    public static String encodeToBase64(String text) {
        byte[] textBytes = text.getBytes(StandardCharsets.UTF_8);
        byte[] encodedBytes = Base64.getEncoder().encode(textBytes);
        return new String(encodedBytes, StandardCharsets.UTF_8);
    }
    
    public static String decodeFromBase64(String base64String) {
        try {
            byte[] base64Bytes = base64String.getBytes(StandardCharsets.UTF_8);
            byte[] decodedBytes = Base64.getDecoder().decode(base64Bytes);
            return new String(decodedBytes, StandardCharsets.UTF_8);
        } catch (IllegalArgumentException e) {
            throw new IllegalArgumentException("Ungültige Base64-Zeichenfolge: " + e.getMessage());
        }
    }
    
    public static void main(String[] args) {
        String originalText = "Hallo, Welt!";
        String encoded = encodeToBase64(originalText);
        System.out.println("Codiert: " + encoded);  // SGVsbG8sIFdvcmxkIQ==
        
        try {
            String decoded = decodeFromBase64(encoded);
            System.out.println("Dekodiert: " + decoded);  // Hallo, Welt!
        } catch (IllegalArgumentException e) {
            System.err.println(e.getMessage());
        }
    }
}
<?php
// PHP Base64 Codierung/Dekodierung
function encodeToBase64($text) {
    return base64_encode($text);
}

function decodeFromBase64($base64String) {
    $decoded = base64_decode($base64String, true);
    if ($decoded === false) {
        throw new Exception("Ungültige Base64-Zeichenfolge");
    }
    return $decoded;
}

// Beispielverwendung
$originalText = "Hallo, Welt!";
$encoded = encodeToBase64($originalText);
echo "Codiert: " . $encoded . "\n";  // SGVsbG8sIFdvcmxkIQ==

try {
    $decoded = decodeFromBase64($encoded);
    echo "Dekodiert: " . $decoded . "\n";  // Hallo, Welt!
} catch (Exception $e) {
    echo "Fehler: " . $e->getMessage() . "\n";
}
?>
// C# Base64 Codierung/Dekodierung
using System;
using System.Text;

class Base64Beispiel
{
    public static string EncodeToBase64(string text)
    {
        byte[] textBytes = Encoding.UTF8.GetBytes(text);
        return Convert.ToBase64String(textBytes);
    }
    
    public static string DecodeFromBase64(string base64String)
    {
        try
        {
            byte[] base64Bytes = Convert.FromBase64String(base64String);
            return Encoding.UTF8.GetString(base64Bytes);
        }
        catch (FormatException)
        {
            throw new FormatException("Ungültige Base64-Zeichenfolge");
        }
    }
    
    static void Main()
    {
        string originalText = "Hallo, Welt!";
        string encoded = EncodeToBase64(originalText);
        Console.WriteLine($"Codiert: {encoded}");  // SGVsbG8sIFdvcmxkIQ==
        
        try
        {
            string decoded = DecodeFromBase64(encoded);
            Console.WriteLine($"Dekodiert: {decoded}");  // Hallo, Welt!
        }
        catch (FormatException e)
        {
            Console.WriteLine($"Fehler: {e.Message}");
        }
    }
}
# Ruby Base64 Codierung/Dekodierung
require 'base64'

def encode_to_base64(text)
  Base64.strict_encode64(text)
end

def decode_from_base64(base64_string)
  begin
    Base64.strict_decode64(base64_string)
  rescue ArgumentError => e
    raise "Ungültige Base64-Zeichenfolge: #{e.message}"
  end
end

# Beispielverwendung
original_text = "Hallo, Welt!"
encoded = encode_to_base64(original_text)
puts "Codiert: #{encoded}"  # SGVsbG8sIFdvcmxkIQ==

begin
  decoded = decode_from_base64(encoded)
  puts "Dekodiert: #{decoded}"  # Hallo, Welt!
rescue StandardError => e
  puts "Fehler: #{e.message}"
end
// Go Base64 Codierung/Dekodierung
package main

import (
    "encoding/base64"
    "fmt"
)

func encodeToBase64(text string) string {
    return base64.StdEncoding.EncodeToString([]byte(text))
}

func decodeFromBase64(base64String string) (string, error) {
    bytes, err := base64.StdEncoding.DecodeString(base64String)
    if err != nil {
        return "", fmt.Errorf("ungültige Base64-Zeichenfolge: %v", err)
    }
    return string(bytes), nil
}

func main() {
    originalText := "Hallo, Welt!"
    encoded := encodeToBase64(originalText)
    fmt.Println("Codiert:", encoded)  // SGVsbG8sIFdvcmxkIQ==
    
    decoded, err := decodeFromBase64(encoded)
    if err != nil {
        fmt.Println("Fehler:", err)
    } else {
        fmt.Println("Dekodiert:", decoded)  // Hallo, Welt!
    }
}
// Swift Base64 Codierung/Dekodierung
import Foundation

func encodeToBase64(_ text: String) -> String? {
    if let data = text.data(using: .utf8) {
        return data.base64EncodedString()
    }
    return nil
}

func decodeFromBase64(_ base64String: String) -> String? {
    if let data = Data(base64Encoded: base64String) {
        return String(data: data, encoding: .utf8)
    }
    return nil
}

// Beispielverwendung
let originalText = "Hallo, Welt!"
if let encoded = encodeToBase64(originalText) {
    print("Codiert: \(encoded)")  // SGVsbG8sIFdvcmxkIQ==
    
    if let decoded = decodeFromBase64(encoded) {
        print("Dekodiert: \(decoded)")  // Hallo, Welt!
    } else {
        print("Fehler: Konnte die Base64-Zeichenfolge nicht dekodieren")
    }
} else {
    print("Fehler: Konnte den Text nicht codieren")
}
' Excel VBA Base64 Codierung/Dekodierung
' Hinweis: Dies erfordert einen Verweis auf Microsoft XML, v6.0
Function EncodeToBase64(text As String) As String
    Dim xmlObj As Object
    Set xmlObj = CreateObject("MSXML2.DOMDocument")
    
    Dim xmlNode As Object
    Set xmlNode = xmlObj.createElement("b64")
    
    xmlNode.DataType = "bin.base64"
    xmlNode.nodeTypedValue = StrConv(text, vbFromUnicode)
    
    EncodeToBase64 = xmlNode.text
    
    Set xmlNode = Nothing
    Set xmlObj = Nothing
End Function

Function DecodeFromBase64(base64String As String) As String
    On Error GoTo ErrorHandler
    
    Dim xmlObj As Object
    Set xmlObj = CreateObject("MSXML2.DOMDocument")
    
    Dim xmlNode As Object
    Set xmlNode = xmlObj.createElement("b64")
    
    xmlNode.DataType = "bin.base64"
    xmlNode.text = base64String
    
    DecodeFromBase64 = StrConv(xmlNode.nodeTypedValue, vbUnicode)
    
    Set xmlNode = Nothing
    Set xmlObj = Nothing
    Exit Function
    
ErrorHandler:
    DecodeFromBase64 = "Fehler: Ungültige Base64-Zeichenfolge"
End Function

' Verwendung in einem Arbeitsblatt:
' =EncodeToBase64("Hallo, Welt!")
' =DecodeFromBase64("SGVsbG8sIFdvcmxkIQ==")
# R Base64 Codierung/Dekodierung
# Erfordert das 'base64enc'-Paket
# install.packages("base64enc")
library(base64enc)

encode_to_base64 <- function(text) {
  # Konvertieren Sie den Text in rohe Bytes, dann codieren
  text_raw <- charToRaw(text)
  base64_encoded <- base64encode(text_raw)
  return(rawToChar(base64_encoded))
}

decode_from_base64 <- function(base64_string) {
  tryCatch({
    # Konvertieren Sie die Base64-Zeichenfolge in rohe Bytes, dann dekodieren
    base64_raw <- charToRaw(base64_string)
    decoded_raw <- base64decode(base64_raw)
    return(rawToChar(decoded_raw))
  }, error = function(e) {
    stop(paste("Ungültige Base64-Zeichenfolge:", e$message))
  })
}

# Beispielverwendung
original_text <- "Hallo, Welt!"
encoded <- encode_to_base64(original_text)
cat("Codiert:", encoded, "\n")  # SGVsbG8sIFdvcmxkIQ==

tryCatch({
  decoded <- decode_from_base64(encoded)
  cat("Dekodiert:", decoded, "\n")  # Hallo, Welt!
}, error = function(e) {
  cat("Fehler:", e$message, "\n")
})
% MATLAB Base64 Codierung/Dekodierung
function demo_base64()
    originalText = 'Hallo, Welt!';
    
    % Codieren
    encoded = encode_to_base64(originalText);
    fprintf('Codiert: %s\n', encoded);  % SGVsbG8sIFdvcmxkIQ==
    
    % Dekodieren
    try
        decoded = decode_from_base64(encoded);
        fprintf('Dekodiert: %s\n', decoded);  % Hallo, Welt!
    catch e
        fprintf('Fehler: %s\n', e.message);
    end
end

function encoded = encode_to_base64(text)
    % Konvertieren Sie den Text in ein uint8-Array und codieren Sie ihn
    bytes = uint8(text);
    encoded = base64encode(bytes);
end

function decoded = decode_from_base64(base64String)
    try
        % Dekodieren Sie die Base64-Zeichenfolge in ein uint8-Array
        bytes = base64decode(base64String);
        decoded = char(bytes);
    catch
        error('Ungültige Base64-Zeichenfolge');
    end
end
// C Base64 Codierung/Dekodierung mit OpenSSL
#include <stdio.h>
#include <string.h>
#include <openssl/bio.h>
#include <openssl/evp.h>
#include <openssl/buffer.h>
#include <stdint.h>

char* encode_to_base64(const char* input) {
    BIO *bio, *b64;
    BUF_MEM *bufferPtr;
    
    b64 = BIO_new(BIO_f_base64());
    bio = BIO_new(BIO_s_mem());
    bio = BIO_push(b64, bio);
    
    BIO_set_flags(bio, BIO_FLAGS_BASE64_NO_NL);
    BIO_write(bio, input, strlen(input));
    BIO_flush(bio);
    BIO_get_mem_ptr(bio, &bufferPtr);
    
    char* result = (char*)malloc(bufferPtr->length + 1);
    memcpy(result, bufferPtr->data, bufferPtr->length);
    result[bufferPtr->length] = '\0';
    
    BIO_free_all(bio);
    
    return result;
}

char* decode_from_base64(const char* input) {
    BIO *bio, *b64;
    size_t length = strlen(input);
    char* buffer = (char*)malloc(length);
    
    b64 = BIO_new(BIO_f_base64());
    bio = BIO_new_mem_buf(input, -1);
    bio = BIO_push(b64, bio);
    
    BIO_set_flags(bio, BIO_FLAGS_BASE64_NO_NL);
    int decoded_length = BIO_read(bio, buffer, length);
    
    if (decoded_length <= 0) {
        free(buffer);
        BIO_free_all(bio);
        return NULL; // Ungültige Base64-Eingabe
    }
    
    buffer[decoded_length] = '\0';
    
    BIO_free_all(bio);
    
    return buffer;
}

int main() {
    const char* original_text = "Hallo, Welt!";
    
    char* encoded = encode_to_base64(original_text);
    printf("Codiert: %s\n", encoded);  // SGVsbG8sIFdvcmxkIQ==
    
    char* decoded = decode_from_base64(encoded);
    if (decoded) {
        printf("Dekodiert: %s\n", decoded);  // Hallo, Welt!
        free(decoded);
    } else {
        printf("Fehler: Ungültige Base64-Zeichenfolge\n");
    }
    
    free(encoded);
    
    return 0;
}
// Rust Base64 Codierung/Dekodierung
use base64::{encode, decode};
use std::str;

fn encode_to_base64(text: &str) -> String {
    encode(text)
}

fn decode_from_base64(base64_string: &str) -> Result<String, String> {
    match decode(base64_string) {
        Ok(bytes) => {
            match str::from_utf8(&bytes) {
                Ok(text) => Ok(text.to_string()),
                Err(e) => Err(format!("Ungültige UTF-8-Sequenz: {}", e))
            }
        },
        Err(e) => Err(format!("Ungültige Base64-Zeichenfolge: {}", e))
    }
}

fn main() {
    let original_text = "Hallo, Welt!";
    let encoded = encode_to_base64(original_text);
    println!("Codiert: {}", encoded);  // SGVsbG8sIFdvcmxkIQ==
    
    match decode_from_base64(&encoded) {
        Ok(decoded) => println!("Dekodiert: {}", decoded),  // Hallo, Welt!
        Err(e) => println!("Fehler: {}", e)
    }
}

Randfälle und Überlegungen

Beim Arbeiten mit Base64-Codierung und -Decodierung sollten Sie sich dieser wichtigen Überlegungen bewusst sein:

  1. Unicode und Nicht-ASCII-Zeichen: Stellen Sie sicher, dass Sie vor der Base64-Codierung die richtige Zeichencodierung (in der Regel UTF-8) verwenden, wenn Sie Texte mit Nicht-ASCII-Zeichen codieren.

  2. Auffüllung: Standard-Base64 verwendet Auffüllung mit "="-Zeichen, um sicherzustellen, dass die Ausgabelänge ein Vielfaches von 4 ist. Einige Implementierungen erlauben das Weglassen der Auffüllung, was zu Kompatibilitätsproblemen führen kann.

  3. Zeilenumbrüche: Traditionelle Base64-Implementierungen fügen Zeilenumbrüche (typischerweise alle 76 Zeichen) zur Lesbarkeit hinzu, aber moderne Anwendungen lassen diese oft weg.

  4. URL-sichere Base64: Standard-Base64 verwendet "+" und "/" Zeichen, die in URLs eine spezielle Bedeutung haben. Verwenden Sie für URL-Kontexte URL-sichere Base64, die diese durch "-" und "_" ersetzt.

  5. Whitespace: Einige Implementierungen sind nachsichtig und ignorieren Whitespace beim Dekodieren, während andere exakte Eingaben erfordern.

  6. Größenzunahme: Die Base64-Codierung erhöht die Größe der Daten um etwa 33% (4 Ausgabebytes für 3 Eingabebytes).

  7. Leistung: Die Base64-Codierung/-Dekodierung kann bei sehr großen Daten rechnerisch intensiv sein. Berücksichtigen Sie Streaming-Ansätze für große Dateien.

Referenzen

  1. RFC 4648 - Die Base16-, Base32- und Base64-Datenkodierungen
  2. RFC 2045 - MIME Teil Eins: Format von Internetnachrichtenkörpern
  3. MDN Web Docs: Base64-Codierung und -Dekodierung
  4. Base64 - Wikipedia
  5. MIME - Wikipedia
Feedback