Zum Hauptinhalt springen

RFC 4648 - Base16-, Base32- und Base64-Datenkodierungen

Veröffentlicht: Oktober 2006
Status: Standards Track Protocol
Autor: S. Josefsson (SJD)
Macht obsolet: RFC 3548


Zusammenfassung (Abstract)

Dieses Dokument beschreibt die häufig verwendeten Base64-, Base32- und Base16-Kodierungsschemata. Es erörtert auch die Verwendung von Zeilenvorschüben in kodierten Daten, die Verwendung von Auffüllung in kodierten Daten, die Verwendung von nicht-alphabetischen Zeichen in kodierten Daten, die Verwendung verschiedener Kodierungsalphabete und kanonische Kodierungen.


Status dieses Memorandums (Status of This Memo)

Dieses Dokument spezifiziert ein Internet Standards Track Protocol für die Internet-Community und bittet um Diskussion und Verbesserungsvorschläge. Bitte beziehen Sie sich auf die aktuelle Ausgabe der "Internet Official Protocol Standards" (STD 1) für den Standardisierungsstatus und Status dieses Protokolls. Die Verbreitung dieses Memorandums ist unbegrenzt.


Copyright (C) The Internet Society (2006).


Inhaltsverzeichnis (Contents)

Hauptabschnitte


Warum Base-Kodierung wichtig ist

Base-Kodierung ist grundlegend für die Datenübertragung im Internet. Sie konvertiert binäre Daten in Textformat und ermöglicht die Übertragung und Speicherung in textbasierten Umgebungen.

Hauptanwendungsfälle

KodierungHauptzweckTypische Anwendungen
Base64Allgemeine binäre KodierungMIME E-Mail-Anhänge, JWT-Token, Daten-URIs
Base64URLURL-sichere KodierungJWT, OAuth-Token, URL-Parameter
Base32Menschenlesbare KodierungTOTP-Schlüssel, Crockford-Kodierung
Base16Hexadezimale KodierungHash-Anzeige, Debug-Ausgabe

Base64 Schnellreferenz

Standard Base64 Kodierung

Zeichensatz: A-Z, a-z, 0-9, +, /
Auffüllzeichen: =
Ausgabelänge: Eingabebytes × 4/3 (aufgerundet auf Vielfaches von 4)

Beispiel:
Eingabe: "Hello"
Ausgabe: "SGVsbG8="

Kodierungsprozess:
H e l l o
01001000 01100101 01101100 01101100 01101111
↓ Nach 6 Bits gruppieren
010010 000110 010101 101100 011011 000110 1111
↓ Tabelle nachschlagen
S G V s b G 8=

Base64URL Kodierung (RFC 4648 §5)

Zeichensatz: A-Z, a-z, 0-9, -, _
Auffüllzeichen: = (normalerweise weggelassen)

Unterschiede zu Standard-Base64:
+ → -
/ → _

Verwendung: JWT, OAuth-Token, URL-Parameter

Base-Kodierung Referenztabellen

Base64 Standard-Zeichentabelle

Wert Zch  Wert Zch  Wert Zch  Wert Zch
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 n 55 3
8 I 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /

Auffüllzeichen: =

Reale Anwendungen

JWT (JSON Web Token)

JWT-Struktur:
header.payload.signature

Jeder Teil ist Base64URL-kodiert:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIn0.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Daten-URI

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA..." />

MIME E-Mail-Anhänge

Content-Type: application/pdf
Content-Transfer-Encoding: base64

JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PC9UeXBlIC9DYXRhbG9n...

Verwandte RFCs

  • RFC 2045 - MIME Part One (Definiert Base64 für MIME)
  • RFC 3548 - Base Encodings (Veraltet durch RFC 4648)
  • RFC 7515 - JSON Web Signature (Verwendet Base64URL)
  • RFC 7519 - JSON Web Token (Verwendet Base64URL)