Base58-encoder en -decoder

Zet tekst, hex-bytes of kleine bestanden om naar Base58 en terug. Kies het Bitcoin-, Flickr- of Ripple-alfabet en voeg desgewenst een Base58Check-controlesom toe of controleer die.

Werkt volledig in je browser. Er wordt niets geüpload.

Zo gebruik je het

  1. Kies Coderen om tekst of bytes naar Base58 om te zetten, of Decoderen om een Base58-string terug te zetten naar gegevens.
  2. Kies het Alfabet. Bitcoin is de standaardkeuze en wordt ook door IPFS en Solana gebruikt.
  3. Typ of plak je invoer. Zet Invoer als op Hex als je ruwe bytes hebt, zoals een hash of een publieke sleutel.
  4. Zet Base58Check-controlesom alleen aan als de string een controlesom van 4 bytes bevat, en kopieer of download daarna het resultaat.

Wat is Base58?

Base58 is een binair-naar-tekstcodering die voor Bitcoin is bedacht. Het alfabet bestaat uit de 62 cijfers en Latijnse letters, min vier tekens die makkelijk te verwarren zijn: 0 (nul), O (hoofdletter o), I (hoofdletter i) en l (kleine L). Er zitten ook geen +, / of = in, zodat je een Base58-string met een dubbelklik kunt selecteren en zonder escaping in een URL kunt zetten.

Anders dan Base64 deelt Base58 de invoer niet op in bitgroepen. De hele invoer wordt als één groot getal behandeld en in grondtal 58 geschreven. Daardoor is er geen opvulling en kan een wijziging in één byte veel uitvoertekens veranderen. Voorloopnulbytes hebben geen getalswaarde, dus elke nulbyte wordt geschreven als het eerste teken van het alfabet (1 in het Bitcoin-alfabet) om hem te behouden. De uitvoer is ongeveer 1,37 keer zo groot als de invoer.

Waar Base58 wordt gebruikt

  • Bitcoin. Legacy-adressen en WIF-privésleutels zijn Base58Check: Base58 met een versiebyte en een controlesom.
  • IPFS. Een content identifier van versie 0 (CIDv0) is de Base58-vorm van een SHA-256-multihash. Daarom zijn die CID's 46 tekens lang en beginnen ze met Qm.
  • Solana. Publieke sleutels, accountadressen en transactiehandtekeningen worden in gewone Base58 geschreven, zonder controlesom. Een sleutel van 32 bytes wordt meestal 43 of 44 tekens.
  • Flickr en de XRP Ledger. Korte links van Flickr gebruiken het Flickr-alfabet en XRP-adressen het Ripple-alfabet. Daarom beginnen die adressen met r.

Gebruik Base58 naar hex en Hex naar Base58 om tussen Base58 en ruwe bytes te wisselen. Voor ID's die alleen alfanumeriek hoeven te zijn, kun je Base62 vergelijken.

Base58-alfabetten

AlfabetTekens, op volgorde
Bitcoin123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
Flickr123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ
Ripplerpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz

Alle drie gebruiken dezelfde 58 tekens in een andere volgorde. Een string die met het ene alfabet is gecodeerd, levert met een ander alfabet dus andere bytes op, of een foutmelding.

Base58 in code

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

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

Specificatie

Alfabet1-9 A-Z a-z zonder 0 O I l
UitvoergrootteOngeveer 137% (conversie als groot getal)
OpvullingGeen (voorloopnulbytes worden 1)
StandaardBitcoin Base58
HoofdlettergevoeligJa

Voorbeelden

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

Veelgestelde vragen

Waarom worden voorloopnulbytes een 1?
Base58 zet de invoer om in één getal, en voorloopnulbytes veranderen de waarde daarvan niet. Om ze te behouden, wordt elke voorloopnulbyte geschreven als het eerste teken van het alfabet, en dat is 1 in het Bitcoin-alfabet. Daarom worden 32 nulbytes gecodeerd als een reeks van 32 enen.
Is Base58 hoofdlettergevoelig?

Ja. Hoofdletters en kleine letters zijn verschillende cijfers, dus als je de hoofdlettervorm van één teken verandert, veranderen de gedecodeerde bytes of wordt de string ongeldig.

Wat is het verschil tussen Base58 en Base58Check?
Base58Check voegt vóór het coderen een controlesom van 4 bytes toe (het begin van een dubbele SHA-256-hash), zodat typefouten opgespoord kunnen worden. Zet hier de optie Base58Check-controlesom aan, of lees de pagina Base58Check voor meer details.
Waarom is de invoer beperkt tot ongeveer 20 KB?
Omdat de hele invoer één groot getal is, groeit de rekentijd met het kwadraat van de lengte. Base58 is bedoeld voor sleutels, hashes en adressen, niet voor bestanden. Gebruik voor grote hoeveelheden gegevens Base64 of Base85.