Decodificato
Codificato
Informazioni su Base64
Base64 è uno schema di codifica che utilizza caratteri ASCII stampabili a 7 bit. È utilizzato principalmente nelle e-mail per trasferire dati a 8 bit su percorsi a 7 bit.
Base64 divide i dati in blocchi di 6 bit e li converte in caratteri alfanumerici (A-Z, a-z, 0-9) e simboli (+, /). Converte ogni 4 caratteri e, se l'ultimo blocco è inferiore a 4 caratteri, riempie con il simbolo uguale (=).
Inoltre, RFC 1421 (PEM) specifica un ritorno a capo ogni 64 caratteri, e RFC 2045 (MIME) specifica un ritorno a capo ogni 76 caratteri.
La tabella di conversione dei caratteri Base64 è la seguente:
| Dati a 6 bit | Carattere 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 | / |
Ad esempio, la conversione di "Hello" in Base64 è la seguente.
1. Rappresentazione binaria.
01001000 01100101 01101100 01101100 01101111 (Per US-ASCII / UTF-8)
2. Dividi ogni 6 bit. Se meno di 6 bit, riempi con "0" alla fine.
010010 000110 010101 101100 011011 000110 111100
3. Converti in caratteri usando la tabella di conversione. Converti ogni 4 caratteri; se meno di 4, riempi con "=" alla fine.
SGVs bG8=
4. Unisci tutti i caratteri per il risultato finale.
SGVsbG8=
Formato dell'intestazione del messaggio MIME (RFC 2047)
DenCode supporta anche la decodifica del formato di intestazione dei messaggi MIME (RFC 2047). Questo formato è utilizzato quando l'oggetto o il destinatario dell'e-mail contiene caratteri non ASCII.
Subject: =?UTF-8?B?44K144Oz44OX44Or?=
Il risultato dopo la decodifica è il seguente:
Subject: サンプル
JSON Web Token (RFC 7519)
JSON Web Token (JWT) è un formato di token che rappresenta in modo compatto i dati JSON utilizzando la codifica Base64url. È ampiamente utilizzato per l'autenticazione e l'autorizzazione nelle applicazioni web ed è standardizzato nella RFC 7519.
Un JWT è composto da tre elementi separati da punti (.).
<Header>.<Payload>.<Signature>
Il ruolo di ciascun elemento è il seguente.
| Elemento | Descrizione |
|---|---|
| Header | Un oggetto JSON contenente metadati come il tipo di token (typ) e l'algoritmo di firma (alg) |
| Payload | Un oggetto JSON contenente informazioni come l'ID utente e la scadenza |
| Signature | Dati di firma utilizzati per rilevare la manomissione dell'intestazione e del payload |
L'intestazione e il payload sono ciascuno codificati in Base64url. Base64url sostituisce "+" con "-" e "/" con "_", e omette il padding "=" rispetto al Base64 standard (RFC 4648). Ciò consente di includerli in modo sicuro negli URL e nelle intestazioni HTTP.
Ad esempio, decodificando il seguente JWT si ottengono l'intestazione e il payload in formato JSON.
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
{
"alg": "HS256",
"typ": "JWT"
}
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
I principali campi (claim) contenuti nell'intestazione e nel payload sono i seguenti.
| Campo | Nome | Descrizione |
|---|---|---|
| alg | Algorithm | Algoritmo utilizzato per la firma o la crittografia (es. HS256, RS256, ES256) |
| typ | Type | Tipo di token (solitamente "JWT") |
| cty | Content Type | Tipo di contenuto del payload ("JWT" per JWT annidati) |
| kid | Key ID | Identificatore della chiave utilizzata per la verifica della firma |
| jku | JWK Set URL | URL del set JWK utilizzato per la verifica della firma |
| x5u | X.509 URL | URL della catena di certificati X.509 utilizzata per la verifica della firma |
| x5t | X.509 Certificate SHA-1 Thumbprint | Impronta SHA-1 del certificato X.509 utilizzato per la verifica della firma |
| Campo | Nome | Descrizione |
|---|---|---|
| iss | Issuer | Emittente del token |
| sub | Subject | Soggetto del token (es. ID utente) |
| aud | Audience | Destinatario del token |
| exp | Expiration Time | Scadenza del token (timestamp Unix) |
| nbf | Not Before | Data prima della quale il token non è valido (timestamp Unix) |
| iat | Issued At | Data di emissione del token (timestamp Unix) |
| jti | JWT ID | Identificatore univoco del token |