Zo gebruik je het
- Kies Coderen om tekst of bytes naar Base58 om te zetten, of Decoderen om een Base58-string terug te zetten naar gegevens.
- Kies het Alfabet. Bitcoin is de standaardkeuze en wordt ook door IPFS en Solana gebruikt.
- Typ of plak je invoer. Zet Invoer als op Hex als je ruwe bytes hebt, zoals een hash of een publieke sleutel.
- 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
| Alfabet | Tekens, op volgorde |
|---|---|
| Bitcoin | 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz |
| Flickr | 123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ |
| Ripple | rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz |
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
| Alfabet | 1-9 A-Z a-z zonder 0 O I l |
|---|---|
| Uitvoergrootte | Ongeveer 137% (conversie als groot getal) |
| Opvulling | Geen (voorloopnulbytes worden 1) |
| Standaard | Bitcoin Base58 |
| Hoofdlettergevoelig | Ja |
Voorbeelden
| Invoer (UTF-8) | Uitvoer |
|---|---|
Hello, World! | 72k1xXWG59fYdzSNoA |
Base64.is | r1Nm3AS7ZcnN |
你好 | 2xuZUfBKa |
Veelgestelde vragen
Waarom worden voorloopnulbytes een 1?
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.