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.
Urheberrechtshinweis (Copyright Notice)
Copyright (C) The Internet Society (2006).
Inhaltsverzeichnis (Table of Contents)
Hauptabschnitte
- 1. Einleitung
- 2. Konventionen dieses Dokuments
- 3. Implementierungsunterschiede
- 3.1 Zeilenumbrüche in kodierten Daten
- 3.2 Auffüllung kodierter Daten
- 3.3 Interpretation von Zeichen außerhalb des Alphabets in kodierten Daten
- 3.4 Wahl des Alphabets
- 3.5 Kanonische Kodierung
- 4. Base-64-Kodierung
- 5. Base-64-Kodierung mit URL- und dateinamenssicherem Alphabet
- 6. Base-32-Kodierung
- 7. Base-32-Kodierung mit erweitertem Hexadezimal-Alphabet
- 8. Base-16-Kodierung
- 9. Abbildungen und Beispiele
- 10. Testvektoren
- 11. ISO-C99-Implementierung von Base64
- 12. Sicherheitsüberlegungen
- 13. Änderungen gegenüber RFC 3548
- 14. Danksagungen
- 15. Kopierbedingungen
- 16. Referenzen
- 16.1 Normative Referenzen
- 16.2 Informative Referenzen
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
| Kodierung | Hauptzweck | Typische Anwendungen |
|---|---|---|
| Base64 | Allgemeine Binärkodierung | MIME-E-Mail-Anhänge, JWT-Token, Data-URI |
| Base64URL | URL-sichere Kodierung | JWT, OAuth-Token, URL-Parameter |
| Base32 | Für Menschen lesbare Kodierung | TOTP-Schlüssel, Crockford-Kodierung |
| Base16 | Hexadezimale Kodierung | Hash-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
- Offizielle Quelle: RFC 4648 (TXT)
- Offizielle Seite: RFC 4648 DataTracker
- Errata: RFC Editor Errata
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)