Så använder du verktyget
- Välj Koda för att göra om text eller byte till Base58, eller Avkoda för att göra om en Base58-sträng till data igen.
- Välj alfabet. Bitcoin är förvalt och är också det alfabet som IPFS och Solana använder.
- Skriv eller klistra in indata. Välj Hex under Indata som om du har råa byte, till exempel en hash eller en publik nyckel.
- Slå bara på Base58Check-kontrollsumma om strängen innehåller en kontrollsumma på 4 byte, och kopiera eller ladda ned resultatet.
Vad är Base58?
Base58 är en kodning av binärdata till text som skapades för Bitcoin. Alfabetet består av de 62 siffrorna och latinska bokstäverna, minus fyra tecken som är lätta att förväxla: 0 (noll), O (versalt o), I (versalt i) och l (gement L). Det saknar också +, / och =, så en Base58-sträng kan markeras med ett dubbelklick och läggas i en URL utan att något behöver kodas om.
Till skillnad från Base64 delar Base58 inte upp indatan i bitgrupper. Hela indatan behandlas som ett enda stort tal som skrivs i bas 58, så det finns ingen utfyllnad och en ändring i en enda byte kan påverka många tecken i utdatan. Inledande nollbyte har inget talvärde, så var och en av dem skrivs som alfabetets första tecken (1 i Bitcoin-alfabetet) för att bevaras. Utdatan blir ungefär 1,37 gånger så stor som indatan.
Var Base58 används
- Bitcoin. Äldre adresser (legacy) och privata nycklar i WIF-format är Base58Check: Base58 med en versionsbyte och en kontrollsumma.
- IPFS. En innehållsidentifierare av version 0 (CIDv0) är Base58-formen av en SHA-256-multihash, och därför är sådana CID:er 46 tecken långa och börjar med
Qm. - Solana. Publika nycklar, kontoadresser och transaktionssignaturer skrivs i vanlig Base58, utan kontrollsumma. En nyckel på 32 byte blir oftast 43 eller 44 tecken.
- Flickr och XRP Ledger. Flickrs korta länkar använder Flickr-alfabetet, och XRP-adresser använder Ripple-alfabetet, vilket är förklaringen till att de börjar med
r.
För att gå mellan Base58 och råa byte använder du Base58 till hex och Hex till Base58. För identifierare som bara behöver vara alfanumeriska kan du jämföra med Base62.
Base58-alfabet
| Alfabet | Tecken i ordning |
|---|---|
| Bitcoin | 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz |
| Flickr | 123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ |
| Ripple | rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz |
Alla tre använder samma 58 tecken i olika ordning, så en sträng som har kodats med ett alfabet avkodas till andra byte, eller misslyckas, med ett annat.
Base58 i programkod
# Python (installera med pip install base58)
import base58
base58.b58encode(b'hello') # ger b'Cn8eVZg'
base58.b58decode('Cn8eVZg') # ger b'hello'
// JavaScript (installera med npm install bs58)
import bs58 from 'bs58';
bs58.encode(new TextEncoder().encode('hello'));
Specifikation
| Alfabet | 1-9 A-Z a-z utom 0 O I l |
|---|---|
| Utdatastorlek | Cirka 137 % (konvertering med stora tal) |
| Utfyllnad | Ingen (inledande nollbyte blir 1) |
| Standard | Bitcoin Base58 |
| Skiftlägeskänslig | Ja |
Exempel
| Indata (UTF-8) | Utdata |
|---|---|
Hello, World! | 72k1xXWG59fYdzSNoA |
Base64.is | r1Nm3AS7ZcnN |
你好 | 2xuZUfBKa |
Vanliga frågor
Varför blir inledande nollbyte till 1?
1 i Bitcoin-alfabetet. Därför kodas 32 nollbyte till en följd av 32 ettor.Är Base58 skiftlägeskänslig?
Ja. Versaler och gemener är olika siffror, så om du ändrar skiftläget på ett enda tecken ändras de avkodade bytena, eller så blir strängen ogiltig.