Zum Hauptinhalt springen

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

  • Status: Proposed Standard (Vorgeschlagener Standard)
  • Veröffentlichungsdatum: Oktober 2006
  • Stream: IETF
  • Obsolet: RFC 3548
  • Errata: Keine Errata

Zusammenfassung (Abstract)​

Dieses Dokument beschreibt die gebräuchlichen base 64-, base 32- und base 16-Kodierungen und behandelt zudem die Verwendung von Zeilenumbrüchen in kodierten Daten, die Verwendung von Auffüllung in kodierten Daten, die Interpretation von Zeichen außerhalb des Alphabets in kodierten Daten, die Verwendung unterschiedlicher Kodierungsalphabete sowie die kanonische Kodierung.


Status dieses Memorandums (Status of This Memo)​

Dieses Dokument spezifiziert ein Internet-Standard-Track-Protokoll für die Internet-Gemeinschaft und bittet um Diskussion und Verbesserungsvorschläge. Den Standardisierungsstatus und den Status dieses Protokolls entnehmen Sie bitte der aktuellen Ausgabe der „Internet Official Protocol Standards“ (STD 1). Die Verteilung dieses Memorandums ist unbeschränkt.


Copyright (C) The Internet Society (2006).


Inhaltsverzeichnis (Table of Contents)​

Hauptabschnitte​


Warum Basis-Kodierung wichtig ist​

Basis-Kodierung ist die Grundlage der Datenübertragung im Internet. Sie wandelt Binärdaten in ein Textformat um, sodass diese in rein textbasierten Umgebungen übertragen und gespeichert werden können.

Hauptanwendungsfälle​

KodierungHauptzweckTypische Anwendungen
Base64Allgemeine BinärkodierungMIME-E-Mail-Anhänge, JWT-Token, Data-URI
Base64URLURL-sichere KodierungJWT, OAuth-Token, URL-Parameter
Base32Für Menschen lesbare KodierungTOTP-Schlüssel, Crockford-Kodierung
Base16Hexadezimale KodierungHash-Anzeige, Debug-Ausgabe

Base64-Kurzreferenz​

Standard-Base64-Kodierung​

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

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

Kodierungsablauf:
H e l l o
01001000 01100101 01101100 01101100 01101111
↓ Gruppierung in 6 Bit
010010 000110 010101 101100 011011 000110 1111
↓ Tabellenabfrage
S G V s b G 8=

Base64URL-Kodierung (RFC 4648 §5)​

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

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

Verwendung: JWT, OAuth-Token, URL-Parameter

Referenztabelle für Basis-Kodierungen​

Base64-Standardzeichentabelle​

Wert   Zeich.   Wert   Zeich.   Wert   Zeich.   Wert   Zeich.
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 /

Füllzeichen: =

Base32-Standardzeichentabelle​

Wert   Zeich.   Wert   Zeich.
0 A 16 Q
1 B 17 R
2 C 18 S
3 D 19 T
4 E 20 U
5 F 21 V
6 G 22 W
7 H 23 X
8 I 24 Y
9 J 25 Z
10 K 26 2
11 L 27 3
12 M 28 4
13 N 29 5
14 O 30 6
15 P 31 7

Füllzeichen: =

Anwendungen in der Praxis​

JWT (JSON Web Token)​

JWT-Struktur:
header.payload.signature

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

Data-URI​

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

MIME-E-Mail-Anhänge​

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

JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PC9UeXBlIC9DYXRhbG9n...

Verwandte Ressourcen​

Verwandte RFCs​

  • RFC 2045 - MIME Teil 1 (definiert Base64 für MIME)
  • RFC 3548 - Basis-Kodierungen (durch RFC 4648 obsolet)
  • RFC 7515 - JSON Web Signature (verwendet Base64URL)
  • RFC 7519 - JSON Web Token (verwendet Base64URL)