Passa al contenuto principale

RFC 4648 - Codifiche Base16, Base32 e Base64

  • Stato: Proposed Standard (Standard proposto)
  • Data di pubblicazione: ottobre 2006
  • Flusso: IETF
  • Obsoleto: RFC 3548
  • Errata: Nessun errata

Sommario (Abstract)​

Questo documento descrive le codifiche comuni base 64, base 32 e base 16 e tratta inoltre dell'uso delle interruzioni di riga nei dati codificati, dell'uso del riempimento nei dati codificati, dell'interpretazione dei caratteri non appartenenti all'alfabeto nei dati codificati, dell'uso di diversi alfabeti di codifica e della codifica canonica.


Stato di questo memo (Status of This Memo)​

Questo documento specifica un protocollo di tipo standard track per la comunità Internet e richiede discussione e suggerimenti di miglioramento. Per lo stato di standardizzazione e lo stato di questo protocollo, consultare la versione corrente delle «Internet Official Protocol Standards» (STD 1). La distribuzione di questo memo non è limitata.


Copyright (C) The Internet Society (2006).


Sommario del contenuto (Table of Contents)​

Sezioni principali​


Perché la codifica di base è importante​

La codifica di base è il fondamento della trasmissione dei dati su Internet. Converte i dati binari in formato testo, consentendone la trasmissione e l'archiviazione in ambienti puramente testuali.

Casi d'uso principali​

CodificaScopo principaleApplicazioni tipiche
Base64Codifica binaria generaleAllegati e-mail MIME, token JWT, Data URI
Base64URLCodifica sicura per URLJWT, token OAuth, parametri URL
Base32Codifica leggibile dall'uomoChiavi TOTP, codifica Crockford
Base16Codifica esadecimaleVisualizzazione hash, output di debug

Riferimento rapido Base64​

Codifica Base64 standard​

Set di caratteri: A-Z, a-z, 0-9, +, /
Carattere di riempimento: =
Lunghezza output: byte di input × 4/3 (arrotondato a multiplo di 4)

Esempio:
Input: "Hello"
Output: "SGVsbG8="

Processo di codifica:
H e l l o
01001000 01100101 01101100 01101100 01101111
↓ raggruppamento per 6 bit
010010 000110 010101 101100 011011 000110 1111
↓ consultazione tabella
S G V s b G 8=

Codifica Base64URL (RFC 4648 §5)​

Set di caratteri: A-Z, a-z, 0-9, -, _
Carattere di riempimento: = (solitamente omesso)

Differenze rispetto al Base64 standard:
+ → -
/ → _

Uso: JWT, token OAuth, parametri URL

Tabella di riferimento delle codifiche di base​

Tabella dei caratteri Base64 standard​

Valore   Car.   Valore   Car.   Valore   Car.   Valore   Car.
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 /

Tabella dei caratteri Base32 standard​

Valore   Car.   Valore   Car.
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

Carattere di riempimento: =

Applicazioni nel mondo reale​

JWT (JSON Web Token)​

Struttura JWT:
header.payload.signature

Ogni parte è codificata in Base64URL:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIn0.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Data URI​

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA..." />

Allegati e-mail MIME​

Content-Type: application/pdf
Content-Transfer-Encoding: base64

JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PC9UeXBlIC9DYXRhbG9n...

Risorse correlate​

RFC correlati​

  • RFC 2045 - MIME Parte 1 (definisce Base64 per MIME)
  • RFC 3548 - Codifiche di base (obsoleto da RFC 4648)
  • RFC 7515 - JSON Web Signature (usa Base64URL)
  • RFC 7519 - JSON Web Token (usa Base64URL)