0

Dekodiert

Base64

Kodiert

Base64
Zeilenumbruch

Über Base64

Base64 ist eine Kodierung, die 7-Bit druckbare ASCII-Zeichen verwendet. Sie wird häufig in E-Mails verwendet, um 8-Bit-Daten über 7-Bit-Datenwege zu übertragen.

Base64 teilt Daten in 6-Bit-Blöcke und wandelt sie in alphanumerische Zeichen (A-Z, a-z, 0-9) und Symbole (+, /) um. Es werden jeweils 4 Zeichen generiert. Wenn das Ende weniger als 4 Zeichen hat, wird mit Gleichheitszeichen (=) aufgefüllt.

RFC 1421 (PEM) schreibt einen Zeilenumbruch alle 64 Zeichen vor, RFC 2045 (MIME) alle 76 Zeichen.

Die Base64-Konvertierungstabelle lautet:

6-Bit-DatenBase64-Zeichen
000000A
000001B
000010C
000011D
000100E
000101F
000110G
000111H
001000I
001001J
001010K
001011L
001100M
001101N
001110O
001111P
010000Q
010001R
010010S
010011T
010100U
010101V
010110W
010111X
011000Y
011001Z
011010a
011011b
011100c
011101d
011110e
011111f
100000g
100001h
100010i
100011j
100100k
100101l
100110m
100111n
101000o
101001p
101010q
101011r
101100s
101101t
101110u
101111v
110000w
110001x
110010y
110011z
1101000
1101011
1101102
1101113
1110004
1110015
1110106
1110117
1111008
1111019
111110+
111111/

Beispiel für die Konvertierung von „Hello“ in Base64:

1. Binärdarstellung.

01001000 01100101 01101100 01101100 01101111  (bei US-ASCII / UTF-8)

2. In 6-Bit-Blöcke teilen. Letzten Block mit „0“ auffüllen.

010010 000110 010101 101100 011011 000110 111100

3. In Zeichen konvertieren. Mit „=“ auffüllen bis 4 Zeichen erreicht sind.

SGVs bG8=

4. Zeichen verbinden.

SGVsbG8=

MIME-Nachrichtenheader (RFC 2047)

DenCode unterstützt auch die Dekodierung von MIME-Headern (RFC 2047). Dies wird verwendet, wenn E-Mail-Betreffzeilen oder Empfänger Nicht-ASCII-Zeichen enthalten.

Subject: =?UTF-8?B?44K144Oz44OX44Or?=

Das dekodierte Ergebnis:

Subject: サンプル

JSON Web Token (RFC 7519)

JSON Web Token (JWT) ist ein Token-Format, das JSON-Daten mithilfe der Base64url-Kodierung kompakt darstellt. Es wird häufig für Authentifizierung und Autorisierung in Webanwendungen verwendet und ist in RFC 7519 standardisiert.

Ein JWT besteht aus drei Elementen, die durch Punkte (.) getrennt sind.

<Header>.<Payload>.<Signature>

Die Rolle jedes Elements ist wie folgt.

ElementBeschreibung
HeaderEin JSON-Objekt mit Metadaten wie dem Token-Typ (typ) und dem Signaturalgorithmus (alg)
PayloadEin JSON-Objekt mit Informationen wie Benutzer-ID und Ablaufzeit
SignatureSignaturdaten zur Erkennung von Manipulationen an Header und Payload

Header und Payload sind jeweils Base64url-kodiert. Base64url ersetzt „+" durch „-" und „/" durch „_" und lässt das Padding „=" im Vergleich zum Standard-Base64 weg (RFC 4648). Dadurch können sie sicher in URLs und HTTP-Headern verwendet werden.

Zum Beispiel ergibt das Dekodieren des folgenden JWT den Header und Payload als JSON.

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
{
  "alg": "HS256",
  "typ": "JWT"
}
{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022
}

Die wichtigsten Felder (Claims) in Header und Payload sind wie folgt.

FeldNameBeschreibung
algAlgorithmAlgorithmus für Signierung oder Verschlüsselung (z. B. HS256, RS256, ES256)
typTypeToken-Typ (normalerweise „JWT")
ctyContent TypeInhaltstyp des Payloads (bei verschachtelten JWTs „JWT")
kidKey IDKennung des Schlüssels zur Signaturverifizierung
jkuJWK Set URLURL des JWK-Sets zur Signaturverifizierung
x5uX.509 URLURL der X.509-Zertifikatskette zur Signaturverifizierung
x5tX.509 Certificate SHA-1 ThumbprintSHA-1-Fingerabdruck des X.509-Zertifikats zur Signaturverifizierung
FeldNameBeschreibung
issIssuerAussteller des Tokens
subSubjectSubjekt des Tokens (z. B. Benutzer-ID)
audAudienceEmpfänger des Tokens
expExpiration TimeAblaufzeit des Tokens (Unix-Zeitstempel)
nbfNot BeforeZeitpunkt, vor dem das Token nicht gültig ist (Unix-Zeitstempel)
iatIssued AtZeitpunkt der Ausstellung des Tokens (Unix-Zeitstempel)
jtiJWT IDEindeutiger Bezeichner des Tokens