Cryptology Academy · Lezione

Codifica Base64: come funziona

Sveli i segreti di Base64, lo schema di codifica usato nelle email, nei JWT e nella trasmissione dei dati.

Lezione 1 di 413 passaggi

Codifica Base64: come funziona è una lezione Cryptology Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cryptology Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cryptology Academy include 4 lezioni in totale.

Perché il binario ha bisogno di una rappresentazione testuale

Molti sistemi, tra cui la posta elettronica, le intestazioni HTTP e XML, sono stati progettati per gestire il testo, ma non dati binari arbitrari. Un valore di byte pari a 0x00 (nullo) o 0x1A (carattere di controllo) può causare errori di parsing o il danneggiamento dei dati.

La codifica Base64 converte dati binari arbitrari in un sottoinsieme di caratteri ASCII sicuro per i sistemi che accettano solo testo, consentendo di incorporare contenuti binari come immagini e certificati nei protocolli basati sul testo.

Raggruppamento a 6 bit dei byte da 8 bit

Base64 funziona prendendo tre byte da 8 bit (24 bit in totale) e dividendoli in quattro gruppi da 6 bit. Ogni gruppo da 6 bit rappresenta un valore da 0 a 63, che corrisponde a un carattere dell'alfabeto Base64.

Questo rapporto da 3 a 4 significa che ogni 3 byte di input producono 4 caratteri di output, con un aumento delle dimensioni del 33%. La relazione è esatta perché 3 byte = 24 bit = 4 gruppi da 6 bit.

L'alfabeto Base64

L'alfabeto Base64 contiene 64 caratteri: lettere maiuscole A-Z (indici 0-25), lettere minuscole a-z (indici 26-51), cifre 0-9 (indici 52-61), il segno più + (indice 62) e la barra obliqua / (indice 63).

Questo alfabeto evita tutti i caratteri di controllo e la maggior parte dei segni di punteggiatura che potrebbero causare problemi nei sistemi di testo. Ogni carattere dell'output Base64 è un carattere ASCII stampabile, sicuro per l'uso in praticamente qualsiasi protocollo testuale.

Padding con i simboli =

Quando la lunghezza dell'input non è un multiplo di 3 byte, è necessario aggiungere padding. Se rimane un byte, viene completato fino a formare un gruppo di 12 bit che produce 2 caratteri Base64 seguiti da "==". Se rimangono due byte, producono 3 caratteri Base64 seguiti da "=".

I simboli di padding = non sono dati codificati; segnalano al decodificatore che l'ultimo blocco è più corto di 3 byte. Assicurano che la lunghezza dell'output sia sempre un multiplo di 4 caratteri.

Esempio di codifica: Man

I valori ASCII di "Man" sono M=77 (01001101), a=97 (01100001), n=110 (01101110). Concatenati: 010011010110000101101110.

Dividendo in gruppi da 6 bit: 010011 | 010110 | 000101 | 101110 = 19 | 22 | 5 | 46. Consultando l'alfabeto Base64: 19=T, 22=W, 5=F, 46=u. "Man" viene codificato come "TWFu".

Variante Base64url

Base64 standard usa + e /, che hanno significati speciali negli URL e nei nomi di file. Base64url è una variante che sostituisce + con - e / con _, rendendola sicura per l'uso negli URL, nei nomi di file e nei valori dei cookie.

I JWT (JSON Web Tokens) usano la codifica Base64url per le sezioni dell'intestazione e del payload. Gli standard JOSE (JSON Object Signing and Encryption) si basano interamente su Base64url.

Dove viene usato Base64

Base64 viene usato negli allegati MIME della posta elettronica (per codificare file binari per le email basate sul testo), nei token JWT (per codificare l'intestazione e il payload JSON), nelle data URI in HTML (per incorporare direttamente immagini in CSS/HTML) e nel formato PEM dei certificati X.509.

Il formato PEM (Privacy Enhanced Mail) racchiude certificati binari codificati in DER tra le intestazioni "-----BEGIN CERTIFICATE-----" e "-----END CERTIFICATE-----".

Base64 non offre sicurezza

Base64 non è crittografia. È una codifica reversibile che non usa chiavi. Chiunque visualizzi dati codificati in Base64 può decodificarli immediatamente usando strumenti disponibili gratuitamente o una one-liner in qualsiasi linguaggio di programmazione.

Un errore comune consiste nel pensare che password o token codificati in Base64 siano "nascosti". Non lo sono. Se è possibile decodificarli, può farlo anche un attaccante. La sicurezza richiede la crittografia, non la codifica.

La decodifica è semplicissima

La decodifica Base64 è altrettanto semplice della codifica. Ogni gruppo Base64 di 4 caratteri viene ricondotto ai propri valori a 6 bit, concatenato e suddiviso in byte. Il padding = indica quanti byte rappresenta l'ultimo gruppo.

In Python: import base64; base64.b64decode("TWFu") restituisce b"Man". Il processo è deterministico, senza perdita e non richiede alcuna chiave o segreto.

Overhead ed efficienza di Base64

L'overhead dimensionale del 33% di Base64 (4 byte di output ogni 3 byte di input), insieme alle interruzioni di riga ogni 76 caratteri (come richiesto da MIME), rende Base64 inefficiente per i trasferimenti binari di grandi dimensioni.

I moderni protocolli binari, come HTTP/2 con framing binario e WebSockets con frame binari, possono gestire direttamente i byte grezzi, eliminando la necessità di Base64 nei contesti ad alte prestazioni.

Base32 e Base58: altri schemi di codifica

Base32 usa un alfabeto di 32 caratteri (A-Z e 2-7), producendo un output più lungo di Base64, ma insensibile alla distinzione tra maiuscole e minuscole e adatto ai contesti in cui tale distinzione potrebbe andare persa. I segreti condivisi TOTP sono spesso codificati in Base32.

Base58, usato da Bitcoin per gli indirizzi dei wallet, elimina i caratteri visivamente ambigui come 0, O, I e l. Ciò riduce gli errori di trascrizione durante la copia degli indirizzi. Il compromesso è che Base58 non è una potenza di 2, quindi la codifica è leggermente più complessa.

Verifica della codifica Base64

Verifichi la Sua conoscenza della codifica Base64.

Concetti chiave: codifica Base64

Base64 converte i dati binari in testo raggruppando i bit in blocchi da 6 bit e associandoli a un alfabeto di 64 caratteri. Produce un overhead dimensionale del 33% e usa il padding = per gli input la cui lunghezza non è un multiplo di 3 byte.

Base64 non offre sicurezza. Viene usato per la compatibilità di trasmissione, non per la riservatezza. Base64url (-/_) è la variante sicura per gli URL usata nei JWT. La decodifica non richiede alcuna chiave e richiede pochi millisecondi.

Gratis per iniziare

Impara Cryptology Academy con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
67
Lezioni
261

Domande Frequenti

La lezione «Codifica Base64: come funziona» è gratuita?

Sì — il testo completo di «Codifica Base64: come funziona» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cryptology Academy, passa a CoddyKit PRO. Il corso Cryptology Academy include 4 lezioni in totale.

Cosa imparerò in «Codifica Base64: come funziona»?

Sveli i segreti di Base64, lo schema di codifica usato nelle email, nei JWT e nella trasmissione dei dati. Eserciti Cryptology Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Cryptology Academy?

Non è richiesta alcuna esperienza precedente. Cryptology Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Codifica Base64: come funziona»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Cryptology Academy?

Sì. Ogni lezione Cryptology Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Codifica Base64: come funziona
  2. ASCII, Unicode e rappresentazione del testo
  3. Esadecimale nell’output crittografico
  4. Codifica, crittografia e hashing a confronto
← Torna a Cryptology Academy