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.
Strumenti Simili
Segnala un Problema
Codifica / Decodifica Base64
Commenti
Ancora nessun commento — scrivi il primo!