Konverter hex til Base58

Lim inn heksadesimale byte og få Base58-strengen som brukes av Bitcoin, Solana og IPFS. Hver innledende 00-byte blir en innledende 1, og alle andre byte bevares nøyaktig.

Kjører helt i nettleseren din. Ingenting lastes opp.

Slik bruker du verktøyet

  1. Lim inn hex-bytene i inndatafeltet. Mellomrom, kolon og et 0x-prefiks godtas.
  2. Les av Base58-resultatet i utdatafeltet.
  3. Kopier det, eller trykk på Bytt om inndata og utdata for å dekode Base58 tilbake til hex.

Slik blir hex til Base58

Hex-sifrene gjøres først om til byte, to sifre per byte, så inndataene må ha et partall sifre. Bytene leses deretter som ett stort tall i big-endian-rekkefølge og skrives på nytt med grunntall 58 og Bitcoin-alfabetet. Hver innledende 00-byte skrives som en 1, og derfor blir 0000ff til 115Q, mens ff alene blir 5Q.

Base58 trenger omtrent 1,37 tegn per byte, så 64 hex-sifre (32 byte) krymper til 43 eller 44 tegn. Alfabetet har ingen 0, O, I, l, + eller /, så resultatet er lett å lese høyt, kan merkes med et dobbeltklikk og passer i URL-er. Alt beregnes i nettleseren din.

Slik lager du Solana- og IPFS-identifikatorer

  • Solana: en adresse er den offentlige Ed25519-nøkkelen på 32 byte i Base58, uten prefiks og uten kontrollsum. Lim inn hex-nøkkelen på 64 sifre for å få adressen.
  • IPFS CIDv0: en CIDv0 er en sha2-256-multihash i Base58. Sett 1220 foran hashverdien på 64 sifre, så får du en streng på 46 tegn som begynner med Qm. Hashverdien må være den som IPFS beregnet for den kodede blokken, og den er ikke den samme som SHA-256-hashen av originalfilen.
1220 9d6c2be50f706953479ab9df2ce3edca90b68053c00b3004b7f0accbe1e8eedf
QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG

Bitcoin-adresser trenger en kontrollsum

En hash160 alene er ikke en adresse. En eldre Bitcoin-adresse er Base58Check av versjonsbyten 00 etterfulgt av hash160-verdien på 20 byte, og Base58Check legger til en dobbel SHA-256-kontrollsum på 4 byte før kodingen. Koder du 00 og hash160-verdien med ren Base58, får du en kortere streng uten kontrollsum, og lommebøker avviser den.

Bruk siden Base58Check i stedet: bytt inndata til Hex, skriv inn 00 etterfulgt av hash160-verdien, så legges kontrollsummen til for deg. Hvis hex-verdien din allerede slutter med riktig kontrollsum, gir denne siden den samme adressen.

0062e907b15cbf27d5425399ebf6f0fb50ebb88f18    (med Base58Check)
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

Hex til Base58 i kode

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

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

Ofte stilte spørsmål

Hvordan gjør jeg en hash160 om til en Bitcoin-adresse?
Sett versjonsbyten 00 foran den og kod med Base58Check, ikke ren Base58. Siden Base58Check gjør dette når du skriver inn bytene som hex.
Hvorfor begynner resultatet med flere 1-tegn?

Hex-verdien din begynner med like mange 00-byte. Base58 beholder dem som innledende 1-tegn, slik at de gjenopprettes når strengen dekodes.

Hvorfor blir hex-inndataene mine avvist?

Hex krever et partall sifre og bare tegnene 0-9 og a-f, med store eller små bokstaver. Mellomrom, kolon og et 0x-prefiks fjernes automatisk; alt annet, for eksempel en bokstav g som har sneket seg inn, eller et manglende siffer, gir en feil.

Hvilket Base58-alfabet bruker denne siden?
Bitcoin-alfabetet, som også Solana, IPFS og de fleste andre prosjekter bruker. For Flickr- eller Ripple-alfabetet går du til siden Base58, velger alfabetet der og skriver inn inndataene som hex-byte.