Passa al contenuto principale

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.


Copyright (C) The Internet Society (2006).


Indice (Contents)

Sezioni principali


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

CodificaScopo principaleApplicazioni tipiche
Base64Codifica binaria generaleAllegati e-mail MIME, token JWT, URI dati
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 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...

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)