bitlvl
IT

Scheda Base64 e codifiche

Tutto ciò che vale la pena consultare su Base64, comprese le righe singole per ogni linguaggio.

Sta in una pagina A4 / Letter verticale; usa «Salva come PDF» nella finestra di stampa per conservarne una copia.

Alfabeto (valore → carattere)

0 A1 B2 C3 D4 E5 F6 G7 H
8 I9 J10 K11 L12 M13 N14 O15 P
16 Q17 R18 S19 T20 U21 V22 W23 X
24 Y25 Z26 a27 b28 c29 d30 e31 f
32 g33 h34 i35 j36 k37 l38 m39 n
40 o41 p42 q43 r44 s45 t46 u47 v
48 w49 x50 y51 z52 053 154 255 3
56 457 558 659 760 861 962 +63 /

URL-safe (RFC 4648 §5): 62 = -, 63 = _, di solito senza padding. Carattere di padding: =.

Come funziona

byte:   01001000 01101001 00100001     "Hi!"
6 bit:  010010 000110 100100 100001
char:     S      G      k      h       "SGkh"
"Hi"  → 01001000 01101001 (16 bit) → 010010 000110 1001(00) → "SGk" + "="
"H"   → 8 bit → 010010 00(0000)          → "SA"  + "=="
Lunghezza input mod 3 = 0nessun padding
= 12 caratteri + ==
= 23 caratteri + =
Dimensione output⌈n / 3⌉ × 4 (≈ +33 %)
Dimensione input dall’outputlen × 3 / 4 − padding
MIME (RFC 2045)righe di 76 caratteri, CRLF
PEMrighe di 64 caratteri

Varianti

Base64A–Z a–z 0–9 + /; email, JSON, URL data:
Base64URL- e _ al posto di + /; JWT, OAuth, nomi di file
Base32A–Z 2–7; segreti TOTP, senza distinzione di maiuscole, +60 %
Base32hex0–9 A–V; ordina numericamente (DNSSEC NSEC3)
Hex (Base16)0–9 a–f; +100 %, banale da leggere
Base58senza 0 O I l; indirizzi Bitcoin
Base85 / Ascii85+25 %; PDF, diff binari di git
base64 di bcrypt./A–Z a–z 0–9, ordine diverso; solo dentro gli hash bcrypt

Comandi

base64 file; base64 -dGNU coreutils (-w0 per non andare a capo)
openssl base64 -AOpenSSL (-A = riga singola)
echo -n 'testo' | base64-n: nessun a capo finale nell’input
base64.b64encode(b), b64decode(s)Python; urlsafe_b64encode per URL-safe
btoa(s), atob(s)JS, solo stringhe Latin-1; per UTF-8 usa TextEncoder + fromCharCode, o Buffer in Node
Buffer.from(s).toString('base64'); Buffer.from(b64, 'base64')Node.js (anche 'base64url')
base64.StdEncoding.EncodeToString(b)Go; RawURLEncoding per URL-safe senza padding
base64_encode(), base64_decode()PHP
Base64.strict_encode64(s)Ruby (encode64 spezza le righe)
[Convert]::ToBase64String($bytes)PowerShell
SELECT TO_BASE64('x'); encode('x','base64')MySQL; PostgreSQL

Da ricordare

  • Base64 non è cifratura; chiunque può decodificarlo.
  • Gli errori di decodifica sono di solito un = mancante, una stringa URL-safe data a un decodificatore rigoroso, o degli a capo.
  • Il testo deve prima diventare byte: scegli UTF-8 e dichiaralo.
  • Un URL data: è data:<mime>;base64,<dati>.

I risultati e i messaggi di questo strumento sono mostrati in inglese.

Domande

Dove codifico o decodifico?

Lo strumento Base64 gestisce testo e file in entrambe le direzioni, compreso l’input URL-safe e senza padding, e mostra i byte decodificati in hex.