Base64 trasforma gruppi di tre byte in quattro caratteri. Il segno = completa l’ultimo gruppo quando mancano byte. È un indicatore di padding e non una lettera del testo originale.
Contare i byte
Un byte residuo richiede ==, due richiedono = e tre non richiedono padding. f diventa Zg==, fo diventa Zm8= e foo diventa Zm9v. Conta i byte UTF-8: una lettera accentata o un emoji può occupare più byte.
Ripristinare il padding assente
Dopo aver rimosso gli spazi, una lunghezza modulo 4 di 2 può ricevere == e una di 3 può ricevere =. Un resto di 1 indica una lunghezza impossibile: aggiungere = non risolve il problema. Controlla anche l’alfabeto e il protocollo.
Distinguere omissione ed errore
Decodex accetta Zg e Zg==, ma rifiuta Zg= perché il padding presente è incompleto. Rifiuta anche A=AA e Zg===. Non cancellare caratteri arbitrariamente per nascondere dati corrotti. Alcuni protocolli richiedono il padding esatto, altri lo omettono.
Prova questo esempio
| Testo | UTF-8 bytes | Base64 | Padding |
|---|---|---|---|
f | 1 | Zg== | == |
fo | 2 | Zm8= | = |
foo | 3 | Zm9v | — |
Domande frequenti
Una stringa senza = è sempre errata?
No. Quando la quantità di byte è un multiplo di tre, il padding non serve. Anche alcuni protocolli lo eliminano esplicitamente.
