Konverterare från Base58 till hex

Klistra in en Base58-sträng, till exempel en Bitcoin-adress, en publik Solana-nyckel eller en IPFS-hash, och få dess råa byte i hexadecimal form. Varje inledande 1 blir en 00-byte.

Körs helt i din webbläsare. Inget laddas upp.

Så använder du verktyget

  1. Klistra in Base58-strängen i indatafältet. Mellanslag och radbrytningar ignoreras.
  2. Läs av de avkodade bytena i hexadecimal form i utdatan.
  3. Kopiera hexvärdet, eller klicka på Byt plats på indata och utdata för att göra om hex till Base58 igen.

Så blir Base58 till hex

Base58 läser hela strängen som ett enda stort tal skrivet med Bitcoins alfabet på 58 tecken, som utelämnar 0, O, I och l. Vid konverteringen till hex skrivs samma tal i bas 16, med två hexsiffror per byte, så ingenting läggs till eller går förlorat.

Nollbyte i början av datan har inget talvärde, så Base58 skriver var och en av dem som en inledande 1, det första tecknet i alfabetet. Avkodaren gör om varje inledande 1 till en 00-byte igen. Till exempel avkodas 115Q till 0000ff, och adressen till Solanas System Program, trettiotvå 1-tecken i rad, avkodas till 32 nollbyte. Konverteringen körs lokalt i din webbläsare.

Exempel från Bitcoin, Solana och IPFS

Mellanslagen i hexvärdena nedan har lagts till för att visa de olika delarna:

Bitcoin-adress (P2PKH, genesisblocket)
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
00 62e907b15cbf27d5425399ebf6f0fb50ebb88f18 c29b7d93
version | hash160 (20 byte) | kontrollsumma (4 byte)

Publik Solana-nyckel (programmet SPL Token)
TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
06ddf6e1d765a193d9cbe146ceeb79ac1cb485ed5f5b37913a8cf5857eff00a9
32 byte, ingen versionsbyte, ingen kontrollsumma

IPFS CIDv0
QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG
12 20 9d6c2be50f706953479ab9df2ce3edca90b68053c00b3004b7f0accbe1e8eedf
sha2-256 | längd 32 | hashsumma

Äldre Bitcoin-adresser (legacy) börjar med 1 eftersom deras versionsbyte är 00. P2SH-adresser börjar med 3 och avkodas till version 05.

Base58Check-kontrollsummor finns kvar i bytena

Bitcoin-adresser och privata nycklar i WIF-format använder Base58Check: fyra kontrollsummebyte, tagna från en dubbel SHA-256 av nyttolasten, läggs till före kodningen. Den här sidan använder vanlig Base58, så kontrollsumman avkodas som all annan data och syns som de sista 8 hexsiffrorna. I en äldre adress är hash160 de 40 hexsiffrorna mellan den inledande 00 och kontrollsumman.

För att bekräfta att en adress är intakt och få nyttolasten utan kontrollsumma avkodar du den på sidan Base58Check. Solana-nycklar och IPFS-hashar har ingen kontrollsumma, så vanlig Base58 är rätt val för dem.

Base58 till hex i programkod

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

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

Vanliga frågor

Varför avkodas en Bitcoin-adress till 25 byte i stället för 20?

En äldre adress innehåller en version på 1 byte, den publika nyckelns hash160 på 20 byte och en kontrollsumma på 4 byte. Vanlig Base58 returnerar alla tre, så du får 50 hexsiffror. Hash160 är allt mellan den första byten och de fyra sista.

Varför blir varje inledande 1 till 00?

I Base58 står tecknet 1 för värdet noll. Inledande nollbyte skulle försvinna om datan behandlades som ett vanligt tal, så var och en skrivs som tecknet 1 och avkodas tillbaka till en 00-byte.

Varför får jag ett fel om ogiltigt tecken?
Bitcoin-alfabetet saknar 0, O, I och l, så en sträng som innehåller dem är inte Base58. Bitcoin-adresser som börjar med bc1 använder Bech32, som är en annan kodning. Ripple-adresser (XRP) använder ett eget Base58-alfabet; avkoda dem på sidan Base58 med Ripple-alfabetet valt.
Hur lång är en publik Solana-nyckel?

Exakt 32 byte, eller 64 hexsiffror. I Base58 blir det oftast 43 eller 44 tecken. Nycklar som börjar med nollbyte kan vara kortare, vilket adressen till System Program visar.