Converter van Base58 naar hex

Plak een Base58-string, zoals een Bitcoin-adres, een publieke Solana-sleutel of een IPFS-hash, en krijg de ruwe bytes als hexadecimaal. Elke 1 aan het begin wordt een 00-byte.

Werkt volledig in je browser. Er wordt niets geüpload.

Zo gebruik je het

  1. Plak de Base58-string in het invoerveld. Spaties en regelafbrekingen worden genegeerd.
  2. Lees de gedecodeerde bytes als hexadecimaal af in de uitvoer.
  3. Kopieer de hex, of klik op Invoer en uitvoer omwisselen om hex weer om te zetten naar Base58.

Hoe Base58 hex wordt

Base58 leest de hele string als één groot getal, geschreven met het Bitcoin-alfabet van 58 tekens, waarin 0, O, I en l ontbreken. Bij het omzetten naar hex wordt hetzelfde getal in grondtal 16 geschreven, twee hexcijfers per byte, zodat er niets bijkomt of verloren gaat.

Nulbytes aan het begin van de gegevens hebben geen getalswaarde, dus Base58 legt elk ervan vast als een voorloop-1, het eerste teken van het alfabet. De decoder zet elke voorloop-1 weer om in een 00-byte. Zo decodeert 115Q naar 0000ff, en het adres van het Solana System Program, tweeëndertig keer het teken 1 achter elkaar, decodeert naar 32 nulbytes. De conversie gebeurt lokaal in je browser.

Voorbeelden voor Bitcoin, Solana en IPFS

In de hex hieronder zijn spaties toegevoegd om de onderdelen zichtbaar te maken:

Bitcoin-adres (P2PKH, genesisblok)
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
00 62e907b15cbf27d5425399ebf6f0fb50ebb88f18 c29b7d93
versie | hash160 (20 bytes) | controlesom (4 bytes)

Publieke Solana-sleutel (SPL Token-programma)
TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
06ddf6e1d765a193d9cbe146ceeb79ac1cb485ed5f5b37913a8cf5857eff00a9
32 bytes, geen versiebyte, geen controlesom

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

Legacy Bitcoin-adressen beginnen met 1 omdat hun versiebyte 00 is. P2SH-adressen beginnen met 3 en decoderen naar versie 05.

Base58Check-controlesommen blijven in de bytes

Bitcoin-adressen en WIF-privésleutels gebruiken Base58Check: vóór het coderen worden vier controlesombytes toegevoegd, afkomstig van een dubbele SHA-256 van de payload. Deze pagina gebruikt gewone Base58, dus de controlesom wordt gedecodeerd zoals alle andere gegevens en verschijnt als de laatste 8 hexcijfers. De hash160 van een legacy-adres bestaat uit de 40 hexcijfers tussen de voorloop-00 en de controlesom.

Om te controleren of een adres intact is en de payload zonder controlesom te krijgen, decodeer je het op de pagina Base58Check. Solana-sleutels en IPFS-hashes hebben geen controlesom, dus daarvoor is gewone Base58 de juiste keuze.

Base58 naar hex in code

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

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

Veelgestelde vragen

Waarom decodeert een Bitcoin-adres naar 25 bytes in plaats van 20?

Een legacy-adres bevat een versie van 1 byte, de hash160 van 20 bytes van de publieke sleutel en een controlesom van 4 bytes. Gewone Base58 geeft alle drie terug, dus je krijgt 50 hexcijfers. De hash160 is alles tussen de eerste byte en de laatste vier.

Waarom wordt elke 1 aan het begin een 00?

In Base58 staat het teken 1 voor de waarde nul. Voorloopnulbytes zouden verdwijnen als de gegevens als gewoon getal werden behandeld, dus elke voorloopnulbyte wordt als een 1 geschreven en bij het decoderen weer een 00-byte.

Waarom krijg ik een foutmelding over een ongeldig teken?
Het Bitcoin-alfabet bevat geen 0, O, I of l, dus een string met die tekens is geen Base58. Bitcoin-adressen die met bc1 beginnen, gebruiken Bech32, een andere codering. Ripple-adressen (XRP) gebruiken een eigen Base58-alfabet; decodeer die op de pagina Base58 met het alfabet Ripple geselecteerd.
Hoe lang is een publieke Solana-sleutel?

Precies 32 bytes, oftewel 64 hexcijfers. In Base58 zijn dat meestal 43 of 44 tekens. Sleutels die met nulbytes beginnen, kunnen korter zijn, zoals het adres van het System Program laat zien.