Codifica / Decodifica Base64

Codifica testo in Base64 o decodifica Base64 in testo — sicuro per UTF-8, interamente nel tuo browser.

1.265 visualizzazioni

Come Funziona

Base64 trasforma dati binari in testo semplice usando un alfabeto di 64 caratteri stampabili: A–Z, a–z, 0–9, più + e / (64 simboli sono esattamente 2⁶, motivo per cui si chiama Base64). Il codificatore legge l'input 3 byte (24 bit) alla volta, divide quei 24 bit in quattro blocchi da 6 bit, e mappa ciascun blocco da 6 bit su un carattere dell'alfabeto — quindi 3 byte di dati binari diventano sempre esattamente 4 caratteri di testo. Se la lunghezza dell'input non è un multiplo esatto di 3, l'ultimo gruppo viene riempito con uno o due caratteri = per mantenere la lunghezza dell'output multipla di 4.

In concreto: i tre byte che compongono "Man" (77, 97, 110 — 01001101 01100001 01101110 in binario) vengono riraggruppati in quattro blocchi da 6 bit (010011, 010110, 000101, 101110), ciascuno mappato su un carattere, producendo TWFu. Poiché ogni 3 byte di input si espandono sempre in 4 caratteri di output, i dati codificati in Base64 sono in modo affidabile circa il 33% più grandi dell'originale — un'immagine di 300 KB diventa una stringa Base64 di circa 400 KB, il che è rilevante quando si incorporano immagini come URI data: o si allegano file binari dentro JSON o email.

Questo strumento gestisce correttamente Unicode codificando prima il testo in UTF-8, quindi caratteri multi-byte ed emoji ("çğü 😀") fanno andata e ritorno intatti — una chiamata ingenua a btoa() in JavaScript genera un errore su di essi perché si aspetta un byte per carattere. Tutto viene eseguito localmente nel tuo browser; nulla di ciò che digiti viene inviato da nessuna parte.

Base64 compare costantemente in luoghi che la maggior parte delle persone non nota mai: un tag HTML <img src="data:image/png;base64,..."> incorpora un'intera immagine direttamente nel documento invece di collegare a un file; l'header HTTP Authorization: Basic trasporta una stringa "nomeutente:password" codificata in Base64 (solo formattazione, non protezione — è il TLS a garantire davvero la riservatezza durante il trasporto); gli allegati email sono codificati in Base64 fin dallo standard MIME originale, perché SMTP è stato progettato per trasportare testo a 7 bit, non dati binari grezzi; e i JSON Web Token (JWT) usano la variante URL-safe per impacchettare una struttura binaria firmata in tre segmenti di testo separati da punti.

Cosa Sapere

  • Base64 non è crittografia — è una rappresentazione reversibile e pubblicamente nota, con zero segretezza. Chiunque può decodificarla all'istante con lo stesso alfabeto; esiste puramente per rendere sicuro il trasporto di dati binari attraverso canali solo testuali (allegati email MIME, URI di dati, campi JSON, header HTTP Basic-Auth), mai per nascondere il contenuto.
  • Variante URL-safe: poiché + e / hanno un significato speciale nelle URL, un alfabeto Base64 "URL-safe" li sostituisce con - e _ e spesso omette il riempimento con =. Questo strumento decodifica automaticamente entrambe le varianti.
  • Il costo in termini di dimensione è fisso e prevedibile: l'espansione di circa il 33% (rapporto 4/3) è esatta per il payload stesso — per questo le API che accettano upload binari grezzi sono di solito più efficienti in termini di banda rispetto a quelle che richiedono corpi JSON avvolti in Base64.
  • Il riempimento indica il resto: un = significa che la lunghezza dei dati originali superava di 2 byte un multiplo di 3; due = significano 1 byte in più. Nessun riempimento significa che l'input era esattamente un multiplo di 3 byte.

Domande Frequenti

Perché il mio output decodificato appare illeggibile?

Di solito l'input non era Base64 valido (troncato, o con caratteri URL-safe -_ invece di +/), oppure i byte originali non erano affatto testo. Questo strumento decodifica automaticamente le varianti URL-safe.

Posso codificare file?

Questo strumento è per il testo. Per i file, lo schema è una URI data:, che avvolge la stringa Base64 con un prefisso di tipo MIME così che un browser o un client di posta sappia come visualizzarla — la maggior parte dei linguaggi offre soluzioni in una riga (PHP base64_encode(file_get_contents(...)), JS FileReader.readAsDataURL). I file molto grandi di solito è meglio inviarli come binario grezzo piuttosto che avvolti in Base64, dato il sovraccarico di dimensione di circa il 33%.

Base64 è sicuro per le password?

No — è banalmente reversibile per progettazione, senza alcuna chiave o segreto coinvolto. L'autenticazione HTTP Basic lo usa solo per la formattazione del trasporto (impacchettando "utente:password" in una stringa sicura per l'header) e si affida interamente a TLS/HTTPS per la reale riservatezza durante il trasporto. Salva le password con hash tramite un algoritmo lento e salato (bcrypt, argon2, scrypt) — mai codificate, e mai in Base64, che chiunque può invertire con una riga di codice.

Perché l'output codificato in Base64 è sempre circa il 33% più grande dell'input?

Perché la codifica mappa ogni 3 byte (24 bit) di input su 4 caratteri di output, e ogni carattere di output trasporta solo 6 bit di informazione invece degli 8 bit di un byte — questo è un rapporto di espansione fisso di 4/3, non qualcosa che varia con il contenuto. Un file di 3 MB diventa ogni volta una stringa Base64 di circa 4 MB.

Qual è la differenza tra il Base64 standard e la variante "URL-safe"?

Il Base64 standard usa + e / nel suo alfabeto, entrambi con significato riservato all'interno di URL e percorsi di file, quindi una variante URL-safe li sostituisce con - e _ (e spesso omette il riempimento con =) così che la stringa codificata possa stare direttamente in una URL o in un nome file senza escape. Questo strumento riconosce e decodifica automaticamente entrambe le varianti.

Commenti

Ancora nessun commento — scrivi il primo!

Strumenti Simili