Come si usa
- Incolla la stringa Base58 nel campo di input. Spazi e interruzioni di riga vengono ignorati.
- Leggi nell’output i byte decodificati in esadecimale.
- 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?
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.