Converter van hex naar Base58

Plak hexadecimale bytes en krijg de Base58-string die Bitcoin, Solana en IPFS gebruiken. Elke 00-byte aan het begin wordt een 1, en alle andere bytes blijven exact behouden.

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

Zo gebruik je het

  1. Plak de hex-bytes in het invoerveld. Spaties, dubbele punten en het voorvoegsel 0x worden geaccepteerd.
  2. Lees het Base58-resultaat af in de uitvoer.
  3. Kopieer het, of klik op Invoer en uitvoer omwisselen om Base58 weer naar hex te decoderen.

Hoe hex Base58 wordt

De hexcijfers worden eerst omgezet in bytes, twee cijfers per byte, dus de invoer moet een even aantal cijfers hebben. Daarna worden de bytes gelezen als één big-endian getal en opnieuw geschreven in grondtal 58 met het Bitcoin-alfabet. Elke voorloop-00-byte wordt geschreven als een 1; daarom wordt 0000ff 115Q, terwijl ff op zichzelf 5Q wordt.

Base58 heeft ongeveer 1,37 tekens per byte nodig, dus 64 hexcijfers (32 bytes) slinken tot 43 of 44 tekens. Het alfabet bevat geen 0, O, I, l, + of /, zodat het resultaat makkelijk voor te lezen is, met een dubbelklik te selecteren is en in URL's past. Alles wordt in je browser berekend.

Solana- en IPFS-ID's opbouwen

  • Solana: een adres is de publieke Ed25519-sleutel van 32 bytes in Base58, zonder voorvoegsel en zonder controlesom. Plak de hexsleutel van 64 cijfers om het adres te krijgen.
  • IPFS CIDv0: een CIDv0 is een sha2-256-multihash in Base58. Zet 1220 vóór de digest van 64 cijfers en je krijgt een string van 46 tekens die met Qm begint. Het moet wel de digest zijn die IPFS voor het gecodeerde blok heeft berekend, en die is niet hetzelfde als de SHA-256 van het originele bestand.
1220 9d6c2be50f706953479ab9df2ce3edca90b68053c00b3004b7f0accbe1e8eedf
QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG

Bitcoin-adressen hebben een controlesom nodig

Een hash160 op zichzelf is geen adres. Een legacy Bitcoin-adres is de Base58Check-codering van de versiebyte 00 gevolgd door de hash160 van 20 bytes, waarbij vóór het coderen een controlesom van 4 bytes uit een dubbele SHA-256 wordt toegevoegd. Codeer je 00 en de hash160 met gewone Base58, dan krijg je een kortere string zonder controlesom, en die wordt door wallets geweigerd.

Gebruik in plaats daarvan de pagina Base58Check: zet Invoer als op Hex, voer 00 gevolgd door de hash160 in, en de controlesom wordt automatisch toegevoegd. Eindigt je hex al op de juiste controlesom, dan levert deze pagina hetzelfde adres op.

0062e907b15cbf27d5425399ebf6f0fb50ebb88f18    (Base58Check)
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

Hex naar Base58 in code

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

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

Veelgestelde vragen

Hoe maak ik van een hash160 een Bitcoin-adres?
Zet de versiebyte 00 ervoor en codeer met Base58Check, niet met gewone Base58. De pagina Base58Check doet dat wanneer je de bytes als hex invoert.
Waarom begint het resultaat met meerdere 1-tekens?

Je hex begint met hetzelfde aantal 00-bytes. Base58 bewaart die als enen aan het begin, zodat ze terugkomen wanneer de string wordt gedecodeerd.

Waarom wordt mijn hex-invoer geweigerd?

Hex vereist een even aantal cijfers en alleen de tekens 0-9 en a-f, in hoofdletters of kleine letters. Spaties, dubbele punten en het voorvoegsel 0x worden automatisch verwijderd; al het andere, zoals een verdwaalde letter g of een ontbrekend cijfer, geeft een fout.

Welk Base58-alfabet gebruikt deze pagina?
Het Bitcoin-alfabet, dat ook Solana, IPFS en de meeste andere projecten gebruiken. Voor het Flickr- of Ripple-alfabet ga je naar de pagina Base58, kies je daar het alfabet en voer je je invoer in als hex-bytes.