Base58-koder og -dekoder

Konvertér tekst, hexbytes eller små filer til Base58 og tilbage. Vælg Bitcoin-, Flickr- eller Ripple-alfabetet, og tilføj eller kontrollér eventuelt en Base58Check-kontrolsum.

Kører udelukkende i din browser. Intet bliver uploadet.

Sådan bruger du værktøjet

  1. Vælg Kod for at omdanne tekst eller bytes til Base58, eller Afkod for at omdanne en Base58-streng tilbage til data.
  2. Vælg det ønskede alfabet under Alfabet. Bitcoin er forvalgt og er også det alfabet, som IPFS og Solana bruger.
  3. Skriv eller indsæt dit input. Sæt Input som til Hex, hvis du har rå bytes, for eksempel en hashværdi eller en offentlig nøgle.
  4. Slå kun Base58Check-kontrolsum til, hvis strengen indeholder en kontrolsum på 4 bytes, og kopiér eller download derefter resultatet.

Hvad er Base58?

Base58 er en binær-til-tekst-kodning, der blev skabt til Bitcoin. Alfabetet består af de 62 cifre og latinske bogstaver minus fire tegn, der er lette at forveksle: 0 (nul), O (stort o), I (stort i) og l (lille L). Det indeholder heller ikke +, / eller =, så en Base58-streng kan markeres med et dobbeltklik og indsættes i en URL uden escaping.

I modsætning til Base64 deler Base58 ikke inputtet op i bitgrupper. Hele inputtet behandles som ét stort tal, der skrives i base 58, så der er ingen udfyldning, og en ændring i én byte kan ændre mange tegn i outputtet. Foranstillede nulbytes har ingen talværdi, så hver af dem skrives som alfabetets første tegn (1 i Bitcoin-alfabetet), for at de ikke går tabt. Outputtet er ca. 1,37 gange så stort som inputtet.

Her bruges Base58

  • Bitcoin. Ældre adresser (legacy) og private WIF-nøgler er Base58Check: Base58 med en versionsbyte og en kontrolsum.
  • IPFS. En content identifier i version 0 (CIDv0) er Base58-formen af en SHA-256-multihash, og derfor er disse CID'er 46 tegn lange og begynder med Qm.
  • Solana. Offentlige nøgler, kontoadresser og transaktionssignaturer skrives i almindelig Base58 uden kontrolsum. En nøgle på 32 bytes bliver som regel til 43 eller 44 tegn.
  • Flickr og XRP Ledger. Korte Flickr-links bruger Flickr-alfabetet, mens XRP-adresser bruger Ripple-alfabetet og derfor begynder med r.

Brug Base58 til hex og Hex til Base58 for at skifte mellem Base58 og rå bytes. Til id'er, der blot skal være alfanumeriske, kan du sammenligne med Base62.

Base58-alfabeter

AlfabetTegn i rækkefølge
Bitcoin123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
Flickr123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ
Ripplerpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz

Alle tre bruger de samme 58 tegn i forskellig rækkefølge, så en streng, der er kodet med ét alfabet, giver andre bytes eller en fejl, hvis den afkodes med et andet.

Base58 i kode

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

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

Specifikation

Alfabet1-9 A-Z a-z uden 0 O I l
OutputstørrelseCa. 137 % (konvertering som ét stort tal)
UdfyldningIngen (foranstillede nulbytes bliver til 1)
StandardBitcoin Base58
Skelner mellem store og små bogstaverJa

Eksempler

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

Ofte stillede spørgsmål

Hvorfor bliver foranstillede nulbytes til 1?
Base58 konverterer inputtet til ét enkelt tal, og foranstillede nulbytes ændrer ikke dets værdi. For at bevare dem skrives hver foranstillet nulbyte som alfabetets første tegn, som er 1 i Bitcoin-alfabetet. Derfor bliver 32 nulbytes kodet til en række på 32 ettaller.
Skelner Base58 mellem store og små bogstaver?

Ja. Store og små bogstaver er forskellige cifre, så hvis du ændrer et enkelt tegn fra stort til lille bogstav eller omvendt, ændres de afkodede bytes, eller strengen bliver ugyldig.

Hvad er forskellen på Base58 og Base58Check?
Base58Check tilføjer en kontrolsum på 4 bytes (begyndelsen af en dobbelt SHA-256-hash) før kodningen, så tastefejl kan opdages. Slå indstillingen Base58Check-kontrolsum til her, eller læs mere på siden Base58Check.
Hvorfor er inputtet begrænset til ca. 20 KB?
Fordi hele inputtet er ét stort tal, vokser beregningsarbejdet med kvadratet på længden. Base58 er beregnet til nøgler, hashværdier og adresser, ikke til filer. Brug Base64 eller Base85 til store datamængder.