Base58-koder og -dekoder

Konverter tekst, hex-byte eller små filer til Base58 og tilbake. Velg Bitcoin-, Flickr- eller Ripple-alfabetet, og legg eventuelt til eller kontroller en Base58Check-kontrollsum.

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

Slik bruker du verktøyet

  1. Velg Kode for å gjøre tekst eller byte om til Base58, eller Dekode for å gjøre en Base58-streng om til data igjen.
  2. Velg alfabet. Bitcoin er standardvalget og er også alfabetet som brukes av IPFS og Solana.
  3. Skriv eller lim inn inndataene. Bytt inndata til Hex hvis du har rå byte, for eksempel en hash eller en offentlig nøkkel.
  4. Slå bare på Base58Check-kontrollsum hvis strengen har en kontrollsum på 4 byte, og kopier eller last ned resultatet.

Hva er Base58?

Base58 er en binær-til-tekst-koding som ble laget for Bitcoin. Alfabetet består av de 62 sifrene og latinske bokstavene, minus fire tegn som er lette å forveksle: 0 (null), O (stor o), I (stor i) og l (liten L). Det har heller ingen +, / eller =, så en Base58-streng kan merkes med et dobbeltklikk og settes inn i en URL uten escaping.

I motsetning til Base64 deler ikke Base58 inndataene opp i bitgrupper. Hele inndataene behandles som ett stort tall og skrives med grunntall 58, så det finnes ingen utfylling, og en endring i én byte kan endre mange tegn i utdataene. Innledende nullbyte har ingen tallverdi, så hver av dem skrives som det første tegnet i alfabetet (1 i Bitcoin-alfabetet) for at de skal bevares. Utdataene er omtrent 1,37 ganger så store som inndataene.

Hvor Base58 brukes

  • Bitcoin. Eldre adresser (legacy) og private WIF-nøkler er Base58Check: Base58 med en versjonsbyte og en kontrollsum.
  • IPFS. En innholdsidentifikator av versjon 0 (CIDv0) er Base58-formen av en SHA-256-multihash, og derfor er slike CID-er 46 tegn lange og begynner med Qm.
  • Solana. Offentlige nøkler, kontoadresser og transaksjonssignaturer skrives i ren Base58, uten kontrollsum. En nøkkel på 32 byte blir vanligvis 43 eller 44 tegn.
  • Flickr og XRP Ledger. Korte Flickr-lenker bruker Flickr-alfabetet, og XRP-adresser bruker Ripple-alfabetet, og det er derfor de begynner med r.

For å gå mellom Base58 og rå byte kan du bruke Base58 til hex og Hex til Base58. For identifikatorer som bare trenger å være alfanumeriske, kan du sammenligne med Base62.

Base58-alfabeter

AlfabetTegn, i rekkefølge
Bitcoin123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
Flickr123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ
Ripplerpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz

Alle tre bruker de samme 58 tegnene i ulik rekkefølge, så en streng som er kodet med ett alfabet, dekodes til andre byte, eller feiler, med et annet.

Base58 i kode

# Python (installer med pip install base58)
import base58
base58.b58encode(b'hello')      # b'Cn8eVZg'
base58.b58decode('Cn8eVZg')     # b'hello'

// JavaScript (installer med npm install bs58)
import bs58 from 'bs58';
bs58.encode(new TextEncoder().encode('hello'));

Spesifikasjon

Alfabet1-9 A-Z a-z uten 0 O I l
UtdatastørrelseOmtrent 137 % (konvertering som stort heltall)
UtfyllingIngen (innledende nullbyte blir 1)
StandardBitcoin Base58
Skiller store og små bokstaverJa

Eksempler

Inndata (UTF-8)Utdata
Hello, World!72k1xXWG59fYdzSNoA
Base64.isr1Nm3AS7ZcnN
你好2xuZUfBKa

Ofte stilte spørsmål

Hvorfor blir innledende nullbyte til 1?
Base58 gjør inndataene om til ett enkelt tall, og innledende nullbyte endrer ikke verdien. For å bevare dem skrives hver innledende nullbyte som det første tegnet i alfabetet, som er 1 i Bitcoin-alfabetet. Derfor blir 32 nullbyte kodet som en rekke med 32 enere.
Skiller Base58 mellom store og små bokstaver?

Ja. Store og små bokstaver er ulike sifre, så hvis du bytter mellom stor og liten bokstav i ett eneste tegn, endres de dekodede bytene, eller strengen blir ugyldig.

Hva er forskjellen mellom Base58 og Base58Check?
Base58Check legger til en kontrollsum på 4 byte (begynnelsen av en dobbel SHA-256-hash) før kodingen, slik at skrivefeil kan oppdages. Slå på valget Base58Check-kontrollsum her, eller se siden Base58Check for detaljer.
Hvorfor er inndataene begrenset til omtrent 20 KB?
Fordi hele inndataene er ett stort tall, vokser arbeidsmengden med kvadratet av lengden. Base58 er ment for nøkler, hasher og adresser, ikke for filer. For store datamengder bør du bruke Base64 eller Base85.