Convertitore da esadecimale a Base58

Incolla dei byte esadecimali e ottieni la stringa Base58 usata da Bitcoin, Solana e IPFS. Ogni byte 00 iniziale diventa un 1 iniziale, e tutti gli altri byte vengono conservati esattamente.

Funziona interamente nel tuo browser. Non viene caricato nulla.

Come si usa

  1. Incolla i byte esadecimali nel campo di input. Sono accettati spazi, due punti e il prefisso 0x.
  2. Leggi nell’output il risultato in Base58.
  3. Copialo, oppure premi Scambia input e output per riconvertire il Base58 in esadecimale.

Come l’esadecimale diventa Base58

Le cifre esadecimali vengono prima trasformate in byte, due cifre per byte, quindi l’input deve avere un numero pari di cifre. I byte vengono poi letti come un unico numero big-endian e riscritti in base 58 con l’alfabeto Bitcoin. Ogni byte 00 iniziale viene scritto come 1, ed è per questo che 0000ff diventa 115Q mentre ff da solo diventa 5Q.

Base58 richiede circa 1,37 caratteri per byte, quindi 64 cifre esadecimali (32 byte) si riducono a 43 o 44 caratteri. L’alfabeto non contiene 0, O, I, l, + né /, quindi il risultato è facile da leggere ad alta voce, si seleziona con un doppio clic e si inserisce negli URL. Tutto viene calcolato nel tuo browser.

Costruire identificatori Solana e IPFS

  • Solana: un indirizzo è la chiave pubblica Ed25519 di 32 byte in Base58, senza prefisso e senza checksum. Incolla la chiave esadecimale di 64 cifre per ottenere l’indirizzo.
  • IPFS CIDv0: un CIDv0 è un multihash sha2-256 in Base58. Metti 1220 davanti al digest di 64 cifre e ottieni una stringa di 46 caratteri che inizia con Qm. Il digest deve essere quello calcolato da IPFS per il blocco codificato, che non coincide con lo SHA-256 del file originale.
1220 9d6c2be50f706953479ab9df2ce3edca90b68053c00b3004b7f0accbe1e8eedf
QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG

Gli indirizzi Bitcoin richiedono un checksum

Un hash160 da solo non è un indirizzo. Un indirizzo Bitcoin legacy è il Base58Check del byte di versione 00 seguito dall’hash160 di 20 byte, e Base58Check aggiunge un checksum di 4 byte ricavato da un doppio SHA-256 prima della codifica. Codificando 00 e l’hash160 con Base58 semplice si ottiene una stringa più corta senza checksum, che i wallet rifiutano.

Usa invece la pagina Base58Check: imposta l’input su esadecimale, inserisci 00 seguito dall’hash160 e il checksum viene aggiunto automaticamente. Se il tuo esadecimale termina già con il checksum corretto, questa pagina produce lo stesso indirizzo.

0062e907b15cbf27d5425399ebf6f0fb50ebb88f18    (Base58Check)
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

Da esadecimale a Base58 nel codice

# Python (installa con pip install base58)
import base58
base58.b58encode(bytes.fromhex('0000ff'))     # b'115Q'

// JavaScript (installa con npm install bs58)
import bs58 from 'bs58';
bs58.encode(Buffer.from('0000ff', 'hex'));    // '115Q'

Domande frequenti

Come si trasforma un hash160 in un indirizzo Bitcoin?
Anteponi il byte di versione 00 e codifica con Base58Check, non con Base58 semplice. La pagina Base58Check lo fa quando inserisci i byte in esadecimale.
Perché il risultato inizia con diversi caratteri 1?

Il tuo esadecimale inizia con lo stesso numero di byte 00. Base58 li conserva come 1 iniziali, in modo che vengano ripristinati quando la stringa viene decodificata.

Perché il mio input esadecimale viene rifiutato?

L’esadecimale richiede un numero pari di cifre e solo i caratteri 0-9 e a-f, in maiuscolo o in minuscolo. Spazi, due punti e il prefisso 0x vengono rimossi automaticamente; qualsiasi altra cosa, come una lettera g di troppo o una cifra mancante, è un errore.

Quale alfabeto Base58 usa questa pagina?
L’alfabeto Bitcoin, usato anche da Solana, IPFS e dalla maggior parte degli altri progetti. Per l’alfabeto Flickr o Ripple, vai alla pagina Base58, scegli lì l’alfabeto e inserisci l’input come byte esadecimali.