Sådan bruger du værktøjet
- Indsæt hexbytes i inputfeltet. Mellemrum, kolon og et 0x-præfiks accepteres.
- Aflæs Base58-resultatet i outputtet.
- Kopiér det, eller klik på Byt om på input og output for at afkode Base58 tilbage til hex.
Sådan bliver hex til Base58
Hexcifrene omdannes først til bytes, to cifre pr. byte, så inputtet skal have et lige antal cifre. Derefter læses de bytes som ét big-endian-tal og skrives om i base 58 med Bitcoin-alfabetet. Hver foranstillet 00-byte skrives som et 1, og derfor bliver 0000ff til 115Q, mens ff alene bliver til 5Q.
Base58 skal bruge ca. 1,37 tegn pr. byte, så 64 hexcifre (32 bytes) skrumper til 43 eller 44 tegn. Alfabetet har ingen 0, O, I, l, + eller /, så resultatet er let at læse højt, kan markeres med et dobbeltklik og passer ind i URL'er. Alt beregnes i din browser.
Sådan bygger du Solana- og IPFS-identifikatorer
- Solana: en adresse er den offentlige Ed25519-nøgle på 32 bytes i Base58 uden præfiks og uden kontrolsum. Indsæt den 64-cifrede hexnøgle for at få adressen.
- IPFS CIDv0: et CIDv0 er en sha2-256-multihash i Base58. Sæt
1220foran det 64-cifrede digest, så får du en streng på 46 tegn, der begynder medQm. Digestet skal være det, IPFS har beregnet for den kodede blok, og det er ikke det samme som SHA-256 af den oprindelige fil.
1220 9d6c2be50f706953479ab9df2ce3edca90b68053c00b3004b7f0accbe1e8eedf
QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG
Bitcoin-adresser kræver en kontrolsum
En hash160 alene er ikke en adresse. En ældre Bitcoin-adresse er Base58Check af versionsbyten 00 efterfulgt af hash160-værdien på 20 bytes, og Base58Check tilføjer en kontrolsum på 4 bytes fra en dobbelt SHA-256 før kodningen. Koder du 00 og hash160-værdien med almindelig Base58, får du en kortere streng uden kontrolsum, og den bliver afvist af tegnebøger.
Brug i stedet siden Base58Check: Sæt Input som til Hex, og indtast 00 efterfulgt af hash160-værdien, så tilføjes kontrolsummen automatisk. Hvis din hex allerede slutter med den korrekte kontrolsum, giver denne side den samme adresse.
0062e907b15cbf27d5425399ebf6f0fb50ebb88f18 (kodet med Base58Check)
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
Hex til Base58 i kode
# Python (installér med pip install base58)
import base58
base58.b58encode(bytes.fromhex('0000ff')) # b'115Q'
// JavaScript (installér med npm install bs58)
import bs58 from 'bs58';
bs58.encode(Buffer.from('0000ff', 'hex')); // '115Q'
Ofte stillede spørgsmål
Hvordan gør jeg en hash160 til en Bitcoin-adresse?
Hvorfor begynder resultatet med flere 1-tegn?
Din hex begynder med det samme antal 00-bytes. Base58 bevarer dem som foranstillede 1-tal, så de bliver gendannet, når strengen afkodes.
Hvorfor bliver mit hexinput afvist?
Hex kræver et lige antal cifre og kun tegnene 0-9 og a-f med store eller små bogstaver. Mellemrum, kolon og et 0x-præfiks fjernes automatisk; alt andet, for eksempel et vildfarent g eller et manglende ciffer, giver en fejl.