Convertitore da esadecimale a Base64

Incolla byte esadecimali e ottieni gli stessi dati in Base64. Separatori come spazi, due punti e prefissi 0x vengono rimossi automaticamente, quindi puoi incollare hash e impronte così come sono.

Funziona interamente nel tuo browser. Non viene caricato nulla.

Come si usa

  1. Incolla la stringa esadecimale nel campo di input. Esadecimale è già selezionato come origine e Base64 come destinazione.
  2. Non preoccuparti della formattazione: spazi, interruzioni di riga, due punti, trattini e prefissi 0x o \x vengono ignorati.
  3. Imposta Base64URL come destinazione se il valore deve finire in un URL, in un JWT o in una JSON Web Key.
  4. Copia il risultato in Base64.

Perché convertire l’esadecimale in Base64

La maggior parte degli strumenti di hashing stampa i digest in esadecimale, ma molti protocolli si aspettano il Base64, che è più corto di un terzo. Casi tipici:

  • Subresource Integrity. L’attributo integrity di script e fogli di stile contiene un digest in Base64, per esempio sha384- seguito da 64 caratteri Base64.
  • Content Security Policy. Gli hash che autorizzano gli script inline si scrivono come 'sha256-...' seguito da un valore Base64.
  • Checksum nelle API HTTP. L’header Content-MD5 e gli header di checksum di Amazon S3 contengono il Base64 del digest binario, non la stringa esadecimale stampata da md5sum.
  • Identificatori compatti. Un UUID occupa 16 byte: 32 cifre esadecimali, ma solo 22 caratteri in Base64URL senza padding.

Formati esadecimali accettati

Le cifre esadecimali non distinguono tra maiuscole e minuscole. Prima della decodifica il convertitore rimuove spazi, interruzioni di riga, due punti, punti e virgola, virgole, trattini e i prefissi 0x, \x, % e &#x. In questo modo funzionano le impronte OpenSSL come AB:CD:EF, gli array C come 0x12, 0x34, le stringhe con sequenze di escape come \x12\x34, i byte con codifica percentuale e gli UUID con trattini.

Dopo la pulizia l’input deve contenere un numero pari di cifre, due per byte. Un numero dispari viene segnalato come errore e di solito significa che è andato perso uno zero iniziale, per esempio abc al posto di 0abc.

Codifica i byte, non il testo esadecimale

Un errore frequente è incollare un digest esadecimale in un normale codificatore da testo a Base64. Così vengono codificati i caratteri 0-9a-f invece dei byte che rappresentano, e il risultato è lungo il doppio del dovuto: 88 caratteri per un digest SHA-256 invece di 44. Tutto ciò che si aspetta il digest binario, come un attributo SRI o un header di checksum, lo rifiuterà. Questo convertitore decodifica prima l’esadecimale in byte.

# Shell: da digest esadecimale a Base64
printf '%s' "$HEX" | xxd -r -p | base64

# Valore SRI di un file in un solo passaggio
openssl dgst -sha384 -binary script.js | openssl base64 -A

# Python
base64.b64encode(bytes.fromhex(h)).decode()

// Node.js (si ferma senza errori al primo carattere non esadecimale)
Buffer.from(h, 'hex').toString('base64')

Domande frequenti

Perché ricevo un errore con la mia stringa esadecimale?

L’input contiene un carattere che non è una cifra esadecimale, come la lettera O al posto dello zero, oppure il numero di cifre è dispari. Il messaggio di errore indica la posizione del carattere non valido; se la lunghezza è dispari, controlla che non manchi uno 0 iniziale.

Quanto sarà lungo l’output Base64?
Dividi per 2 il numero di cifre esadecimali per ottenere i byte, poi conta 4 caratteri ogni 3 byte, arrotondando per eccesso. Un digest SHA-256 di 64 cifre diventa 44 caratteri Base64, compreso un segno =.
Come creo un hash Subresource Integrity?
Calcola il digest SHA-384 del file, converti qui il digest esadecimale e scrivi integrity="sha384-..." con il valore Base64. Con OpenSSL puoi fare tutto con un solo comando: openssl dgst -sha384 -binary file.js | openssl base64 -A.
L’output è Base64 standard o sicuro per URL?
Base64 standard con + e /, come richiesto da SRI, CSP e dagli header di checksum HTTP. Scegli Base64URL come codifica di destinazione quando ti serve un output sicuro per URL.