RFC 4648 - Codifiche dati Base16, Base32 e Base64
Pubblicato: Ottobre 2006
Stato: Protocollo Standards Track
Autore: S. Josefsson (SJD)
Rende obsoleto: RFC 3548
Sommario (Abstract)
Questo documento descrive gli schemi di codifica Base64, Base32 e Base16 comunemente usati. Discute anche l'uso di avanzamenti di riga nei dati codificati, l'uso del riempimento nei dati codificati, l'uso di caratteri non alfabetici nei dati codificati, l'uso di diversi alfabeti di codifica e le codifiche canoniche.
Stato di questo memorandum (Status of This Memo)
Questo documento specifica un protocollo Internet standards track per la comunità Internet e richiede discussione e suggerimenti per miglioramenti. Si prega di riferirsi all'edizione corrente degli "Internet Official Protocol Standards" (STD 1) per lo stato di standardizzazione e lo status di questo protocollo. La distribuzione di questo memorandum è illimitata.
Avviso di copyright (Copyright Notice)
Copyright (C) The Internet Society (2006).
Indice (Contents)
Sezioni principali
- 1. Introduzione
- 2. Convenzioni usate in questo documento
- 3. Discrepanze di implementazione
- 3.1 Avanzamenti di riga nei dati codificati
- 3.2 Riempimento dei dati codificati
- 3.3 Interpretazione di caratteri non alfabetici 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. Illustrazioni ed esempi
- 10. Vettori di test
- 11. Implementazione ISO C99 di Base64
- 12. Considerazioni sulla sicurezza
- 13. Modifiche rispetto a RFC 3548
- 14. Ringraziamenti
- 15. Condizioni di copia
- 16. Riferimenti
- 16.1 Riferimenti normativi
- 16.2 Riferimenti informativi
Perché la codifica Base è importante
La codifica Base è fondamentale per la trasmissione di dati su Internet. Converte i dati binari in formato testo, consentendo la trasmissione e l'archiviazione in ambienti solo testo.
Casi d'uso principali
| Codifica | Scopo principale | Applicazioni tipiche |
|---|---|---|
| Base64 | Codifica binaria generale | Allegati e-mail MIME, token JWT, URI dati |
| 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 al multiplo di 4)
Esempio:
Input: "Hello"
Output: "SGVsbG8="
Processo di codifica:
H e l l o
01001000 01100101 01101100 01101100 01101111
↓ Raggruppare per 6 bit
010010 000110 010101 101100 011011 000110 1111
↓ Consultare la 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: = (tipicamente omesso)
Differenze rispetto a Base64 standard:
+ → -
/ → _
Uso: JWT, token OAuth, parametri URL
Tabelle di riferimento codifica Base
Tabella caratteri Base64 standard
Val Car Val Car Val Car Val 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 /
Carattere di riempimento: =
Applicazioni nel mondo reale
JWT (JSON Web Token)
Struttura JWT:
header.payload.signature
Ogni parte è codificata Base64URL:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIn0.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
URI dati
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA..." />
Allegati e-mail MIME
Content-Type: application/pdf
Content-Transfer-Encoding: base64
JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PC9UeXBlIC9DYXRhbG9n...
Risorse correlate (Related Resources)
- Fonte ufficiale: RFC 4648 (TXT)
- Pagina ufficiale: RFC 4648 DataTracker
- Errata: RFC Editor Errata
RFC correlati
- RFC 2045 - MIME Part One (Definisce Base64 per MIME)
- RFC 3548 - Base Encodings (Reso obsoleto da RFC 4648)
- RFC 7515 - JSON Web Signature (Usa Base64URL)
- RFC 7519 - JSON Web Token (Usa Base64URL)