Sådan bruger du værktøjet
- Vælg Kod for at omdanne tekst eller bytes til Base58, eller Afkod for at omdanne en Base58-streng tilbage til data.
- Vælg det ønskede alfabet under Alfabet. Bitcoin er forvalgt og er også det alfabet, som IPFS og Solana bruger.
- 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.
- 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
| Alfabet | Tegn i rækkefølge |
|---|---|
| Bitcoin | 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz |
| Flickr | 123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ |
| Ripple | rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz |
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
| Alfabet | 1-9 A-Z a-z uden 0 O I l |
|---|---|
| Outputstørrelse | Ca. 137 % (konvertering som ét stort tal) |
| Udfyldning | Ingen (foranstillede nulbytes bliver til 1) |
| Standard | Bitcoin Base58 |
| Skelner mellem store og små bogstaver | Ja |
Eksempler
| Input (UTF-8) | Output |
|---|---|
Hello, World! | 72k1xXWG59fYdzSNoA |
Base64.is | r1Nm3AS7ZcnN |
你好 | 2xuZUfBKa |
Ofte stillede spørgsmål
Hvorfor bliver foranstillede nulbytes til 1?
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.