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.
Avviso di copyright (Copyright Notice)
Copyright (C) The Internet Society (2006).
Sommario del contenuto (Table of Contents)
Sezioni principali
- 1. Introduzione
- 2. Convenzioni usate in questo documento
- 3. Discrepanze di implementazione
- 3.1 Interruzioni di riga nei dati codificati
- 3.2 Riempimento dei dati codificati
- 3.3 Interpretazione dei caratteri non appartenenti all'alfabeto nei dati codificati
- 3.4 Scelta dell'alfabeto
- 3.5 Codifica canonica
- 4. Codifica Base 64
- 5. Codifica Base 64 con alfabeto sicuro per URL e nomi di file
- 6. Codifica Base 32
- 7. Codifica Base 32 con alfabeto esadecimale esteso
- 8. Codifica Base 16
- 9. Diagrammi ed esempi
- 10. Vettori di test
- 11. Implementazione ISO C99 di Base64
- 12. Considerazioni sulla sicurezza
- 13. Modifiche rispetto a RFC 3548
- 14. Riconoscimenti
- 15. Condizioni di copia
- 16. Riferimenti
- 16.1 Riferimenti normativi
- 16.2 Riferimenti informativi
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
| Codifica | Scopo principale | Applicazioni tipiche |
|---|---|---|
| Base64 | Codifica binaria generale | Allegati e-mail MIME, token JWT, Data URI |
| Base64URL | Codifica sicura per URL | JWT, token OAuth, parametri URL |
| Base32 | Codifica leggibile dall'uomo | Chiavi TOTP, codifica Crockford |
| Base16 | Codifica esadecimale | Visualizzazione 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
- Fonte ufficiale: RFC 4648 (TXT)
- Pagina ufficiale: RFC 4648 DataTracker
- Errata: RFC Editor Errata
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)