Slik bruker du verktøyet
- Velg Kode for å gjøre tekst eller byte om til Base58, eller Dekode for å gjøre en Base58-streng om til data igjen.
- Velg alfabet. Bitcoin er standardvalget og er også alfabetet som brukes av IPFS og Solana.
- Skriv eller lim inn inndataene. Bytt inndata til Hex hvis du har rå byte, for eksempel en hash eller en offentlig nøkkel.
- 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
| Alfabet | Tegn, i rekkefølge |
|---|---|
| Bitcoin | 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz |
| Flickr | 123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ |
| Ripple | rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz |
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
| Alfabet | 1-9 A-Z a-z uten 0 O I l |
|---|---|
| Utdatastørrelse | Omtrent 137 % (konvertering som stort heltall) |
| Utfylling | Ingen (innledende nullbyte blir 1) |
| Standard | Bitcoin Base58 |
| Skiller store og små bokstaver | Ja |
Eksempler
| Inndata (UTF-8) | Utdata |
|---|---|
Hello, World! | 72k1xXWG59fYdzSNoA |
Base64.is | r1Nm3AS7ZcnN |
你好 | 2xuZUfBKa |
Ofte stilte spørsmål
Hvorfor blir innledende nullbyte til 1?
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.