0

Wynik dekodowania

Base64

Wynik kodowania

Base64
Złamanie wiersza

O Base64

Base64 to kodowanie binarne na tekst, używające 7-bitowych drukowalnych znaków ASCII. Jest stosowane głównie w e-mailach do przesyłania danych 8-bitowych przez kanały 7-bitowe.

Base64 dzieli dane na grupy 6-bitowe i reprezentuje je za pomocą znaków alfanumerycznych (A-Z, a-z, 0-9) oraz symboli (+, /). Konwertuje bloki po 4 znaki; jeśli blok jest niepełny (ostatnia grupa ma mniej niż 4 znaki), dopełnia się go znakiem równości (=).

Ponadto RFC 1421 (PEM: Privacy-Enhanced Mail) wymaga łamania wierszy co 64 znaki, a RFC 2045 (MIME) - co 76 znaków.

Tabela konwersji znaków Base64:

Dane 6-bitoweZnak Base64
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/

Na przykład, konwersja „Hello” na Base64 wygląda następująco:

1. Zamiana na reprezentację binarną.

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

2. Podział na grupy 6-bitowe. Jeśli ostatnia grupa ma mniej niż 6 bitów, dopełnia się ją zerami.

010010 000110 010101 101100 011011 000110 111100

3. Konwersja na znaki przy użyciu tabeli. Bloki są tworzone po 4 znaki; jeśli blok jest niepełny, dopełnia się go znakiem „=".

SGVs bG8=

4. Połączenie wszystkich znaków daje wynik konwersji Base64.

SGVsbG8=

Nagłówki wiadomości E-mail (MIME) – RFC 2047

DenCode obsługuje dekodowanie nagłówków MIME (RFC 2047), używanych np. w tematach e-maili zawierających znaki spoza ASCII.

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

Wynik dekodowania:

Subject: サンプル (Przykładowy)

JSON Web Token (RFC 7519)

JSON Web Token (JWT) to format tokenu, który w kompaktowy sposób reprezentuje dane JSON za pomocą kodowania Base64url. Jest szeroko stosowany do uwierzytelniania i autoryzacji w aplikacjach internetowych i jest ustandaryzowany w RFC 7519.

JWT składa się z trzech elementów oddzielonych kropkami (.).

<Header>.<Payload>.<Signature>

Rola każdego elementu jest następująca.

ElementOpis
HeaderObiekt JSON zawierający metadane, takie jak typ tokenu (typ) i algorytm podpisu (alg)
PayloadObiekt JSON zawierający informacje, takie jak identyfikator użytkownika i czas wygaśnięcia
SignatureDane podpisu używane do wykrywania manipulacji nagłówkiem i ładunkiem

Nagłówek i ładunek są kodowane w Base64url. Base64url zastępuje „+" znakiem „-" i „/" znakiem „_" oraz pomija wypełnienie „=" w porównaniu ze standardowym Base64 (RFC 4648). Dzięki temu można je bezpiecznie umieszczać w adresach URL i nagłówkach HTTP.

Na przykład dekodowanie poniższego JWT daje nagłówek i ładunek w formacie JSON.

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

Główne pola (oświadczenia) zawarte w nagłówku i ładunku są następujące.

PoleNazwaOpis
algAlgorithmAlgorytm używany do podpisywania lub szyfrowania (np. HS256, RS256, ES256)
typTypeTyp tokenu (zwykle „JWT")
ctyContent TypeTyp zawartości ładunku (dla zagnieżdżonych JWT „JWT")
kidKey IDIdentyfikator klucza używanego do weryfikacji podpisu
jkuJWK Set URLURL zestawu JWK używanego do weryfikacji podpisu
x5uX.509 URLURL łańcucha certyfikatów X.509 używanego do weryfikacji podpisu
x5tX.509 Certificate SHA-1 ThumbprintOdcisk palca SHA-1 certyfikatu X.509 używanego do weryfikacji podpisu
PoleNazwaOpis
issIssuerWystawca tokenu
subSubjectPodmiot tokenu (np. identyfikator użytkownika)
audAudienceOdbiorca tokenu
expExpiration TimeCzas wygaśnięcia tokenu (znacznik czasu Unix)
nbfNot BeforeCzas, przed którym token nie jest ważny (znacznik czasu Unix)
iatIssued AtCzas wystawienia tokenu (znacznik czasu Unix)
jtiJWT IDUnikalny identyfikator tokenu