Convertitore da Base58 a esadecimale

Incolla una stringa Base58, come un indirizzo Bitcoin, una chiave pubblica Solana o un hash IPFS, e ottieni i suoi byte grezzi in esadecimale. Ogni 1 iniziale diventa un byte 00.

Funziona interamente nel tuo browser. Non viene caricato nulla.

Come si usa

  1. Incolla la stringa Base58 nel campo di input. Spazi e interruzioni di riga vengono ignorati.
  2. Leggi nell’output i byte decodificati in esadecimale.
  3. Copia l’esadecimale, oppure premi Scambia input e output per riconvertire l’esadecimale in Base58.

Come Base58 diventa esadecimale

Base58 legge l’intera stringa come un unico numero grande scritto con l’alfabeto Bitcoin di 58 caratteri, che esclude 0, O, I e l. La conversione in esadecimale scrive lo stesso numero in base 16, con due cifre esadecimali per byte, quindi non si aggiunge né si perde nulla.

I byte zero all’inizio dei dati non hanno valore numerico, quindi Base58 registra ciascuno di essi come un 1 iniziale, il primo carattere del suo alfabeto. Il decodificatore riporta ogni 1 iniziale a un byte 00. Per esempio, 115Q si decodifica in 0000ff, e l’indirizzo del System Program di Solana, trentadue caratteri 1 di fila, si decodifica in 32 byte zero. La conversione avviene localmente nel tuo browser.

Esempi con Bitcoin, Solana e IPFS

Nell’esadecimale qui sotto sono stati aggiunti degli spazi per evidenziare le parti:

Indirizzo Bitcoin (P2PKH, blocco genesi)
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
00 62e907b15cbf27d5425399ebf6f0fb50ebb88f18 c29b7d93
versione | hash160 (20 byte) | checksum (4 byte)

Chiave pubblica Solana (programma SPL Token)
TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
06ddf6e1d765a193d9cbe146ceeb79ac1cb485ed5f5b37913a8cf5857eff00a9
32 byte, senza byte di versione, senza checksum

IPFS CIDv0
QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG
12 20 9d6c2be50f706953479ab9df2ce3edca90b68053c00b3004b7f0accbe1e8eedf
sha2-256 | lunghezza 32 | digest

Gli indirizzi Bitcoin legacy iniziano con 1 perché il loro byte di versione è 00. Gli indirizzi P2SH iniziano con 3 e si decodificano con la versione 05.

I checksum Base58Check restano nei byte

Gli indirizzi Bitcoin e le chiavi private WIF usano Base58Check: prima della codifica vengono aggiunti quattro byte di checksum, ricavati da un doppio SHA-256 del payload. Questa pagina usa Base58 semplice, quindi il checksum viene decodificato come qualsiasi altro dato e compare come le ultime 8 cifre esadecimali. L’hash160 di un indirizzo legacy corrisponde alle 40 cifre esadecimali tra lo 00 iniziale e il checksum.

Per verificare che un indirizzo sia integro e ottenere il payload senza checksum, decodificalo nella pagina Base58Check. Le chiavi Solana e gli hash IPFS non hanno checksum, quindi per loro Base58 semplice è la scelta giusta.

Da Base58 a esadecimale nel codice

# Python (installa con pip install base58)
import base58
base58.b58decode('115Q').hex()      # '0000ff'

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

Domande frequenti

Perché un indirizzo Bitcoin si decodifica in 25 byte invece di 20?

Un indirizzo legacy contiene un byte di versione, l’hash160 di 20 byte della chiave pubblica e un checksum di 4 byte. Base58 semplice restituisce tutte e tre le parti, quindi ottieni 50 cifre esadecimali. L’hash160 è tutto ciò che si trova tra il primo byte e gli ultimi quattro.

Perché ogni 1 iniziale diventa 00?

In Base58 il carattere 1 rappresenta il valore zero. Se i dati fossero trattati come un semplice numero, i byte zero iniziali sparirebbero, quindi ciascuno viene scritto come 1 e riportato a un byte 00 in decodifica.

Perché ricevo un errore di carattere non valido?
L’alfabeto Bitcoin non contiene 0, O, I e l, quindi una stringa che li contiene non è Base58. Gli indirizzi Bitcoin che iniziano con bc1 usano Bech32, che è una codifica diversa. Gli indirizzi Ripple (XRP) usano un proprio alfabeto Base58: decodificali nella pagina Base58 selezionando l’alfabeto Ripple.
Quanto è lunga una chiave pubblica Solana?

Esattamente 32 byte, cioè 64 cifre esadecimali. In Base58 sono di solito 43 o 44 caratteri. Le chiavi che iniziano con byte zero possono essere più corte, come dimostra l’indirizzo del System Program.