Wynik dekodowania
Wynik kodowania
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-bitowe | Znak Base64 |
|---|---|
| 000000 | A |
| 000001 | B |
| 000010 | C |
| 000011 | D |
| 000100 | E |
| 000101 | F |
| 000110 | G |
| 000111 | H |
| 001000 | I |
| 001001 | J |
| 001010 | K |
| 001011 | L |
| 001100 | M |
| 001101 | N |
| 001110 | O |
| 001111 | P |
| 010000 | Q |
| 010001 | R |
| 010010 | S |
| 010011 | T |
| 010100 | U |
| 010101 | V |
| 010110 | W |
| 010111 | X |
| 011000 | Y |
| 011001 | Z |
| 011010 | a |
| 011011 | b |
| 011100 | c |
| 011101 | d |
| 011110 | e |
| 011111 | f |
| 100000 | g |
| 100001 | h |
| 100010 | i |
| 100011 | j |
| 100100 | k |
| 100101 | l |
| 100110 | m |
| 100111 | n |
| 101000 | o |
| 101001 | p |
| 101010 | q |
| 101011 | r |
| 101100 | s |
| 101101 | t |
| 101110 | u |
| 101111 | v |
| 110000 | w |
| 110001 | x |
| 110010 | y |
| 110011 | z |
| 110100 | 0 |
| 110101 | 1 |
| 110110 | 2 |
| 110111 | 3 |
| 111000 | 4 |
| 111001 | 5 |
| 111010 | 6 |
| 111011 | 7 |
| 111100 | 8 |
| 111101 | 9 |
| 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.
| Element | Opis |
|---|---|
| Header | Obiekt JSON zawierający metadane, takie jak typ tokenu (typ) i algorytm podpisu (alg) |
| Payload | Obiekt JSON zawierający informacje, takie jak identyfikator użytkownika i czas wygaśnięcia |
| Signature | Dane 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.
| Pole | Nazwa | Opis |
|---|---|---|
| alg | Algorithm | Algorytm używany do podpisywania lub szyfrowania (np. HS256, RS256, ES256) |
| typ | Type | Typ tokenu (zwykle „JWT") |
| cty | Content Type | Typ zawartości ładunku (dla zagnieżdżonych JWT „JWT") |
| kid | Key ID | Identyfikator klucza używanego do weryfikacji podpisu |
| jku | JWK Set URL | URL zestawu JWK używanego do weryfikacji podpisu |
| x5u | X.509 URL | URL łańcucha certyfikatów X.509 używanego do weryfikacji podpisu |
| x5t | X.509 Certificate SHA-1 Thumbprint | Odcisk palca SHA-1 certyfikatu X.509 używanego do weryfikacji podpisu |
| Pole | Nazwa | Opis |
|---|---|---|
| iss | Issuer | Wystawca tokenu |
| sub | Subject | Podmiot tokenu (np. identyfikator użytkownika) |
| aud | Audience | Odbiorca tokenu |
| exp | Expiration Time | Czas wygaśnięcia tokenu (znacznik czasu Unix) |
| nbf | Not Before | Czas, przed którym token nie jest ważny (znacznik czasu Unix) |
| iat | Issued At | Czas wystawienia tokenu (znacznik czasu Unix) |
| jti | JWT ID | Unikalny identyfikator tokenu |