Base58-kodare och avkodare

Steg 1 / 333%

Inmatning


            

Base58 är en binär-till-text-kodning som har utformats för att undvika flera lättförväxlade tecken. Bitcoin-alfabetet utelämnar 0 O I l och + /, medan andra system ordnar samma 58 symboler på ett annat sätt. Äldre Bitcoin-adresser med Base58Check och IPFS CIDv0-strängar är välkända exempel. Verktyget körs bara i webbläsaren, konverterar UTF-8-text eller exakta hexadecimala byte med alfabetet för Bitcoin, Ripple eller Flickr och avvisar tecken som inte ingår i det valda alfabetet.

Så kodar och avkodar du Base58

  1. 1

    Ange bytes eller en Base58-sträng

    Kodningsriktningen accepterar hex eller rå text; avkodningsriktningen accepterar Base58.

  2. 2

    Välj alfabet vid behov

    Standard är Bitcoins Base58; Ripple- och Flickr-varianter finns för kompatibilitet.

  3. 3

    Kör konverteringen

    Base58 delas inte i prydliga 5- eller 6-bitarsgrupper; det behandlas som ett enda big-endian-heltal som delas med 58 upprepade gånger.

  4. 4

    Kopiera resultatet

    Kodade strängar bevarar inledande nollbytes som inledande `1`-tecken (nollglyfen i Bitcoins alfabet).

Bitcoins Base58-alfabet

123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

Lägg märke till vad som saknas: 0, O, I, l. Det första tecknet i alfabetet är 1, vilket representerar heltalet 0.

Så fungerar det egentligen

Till skillnad från Base64, som delar bitar i fasta grupper, behandlar Base58 hela bytesträngen som ett enda big-endian-heltal N och uttrycker det i bas 58:

result = []
while N > 0:
    result.prepend(alphabet[N mod 58])
    N = N / 58
for each leading zero byte in input:
    result.prepend(alphabet[0])  # i.e. '1'

Det är därför Base58-kodning är svår att strömma - du behöver hela talet innan du kan mata ut något tecken.

Base58 jämfört med Base58Check

Den vanliga Base58Check-nyttolasten för en äldre P2PKH-adress är 25 byte: 1 versionsbyte, 20 hashbyte och 4 kontrollsummebyte. Kontrollsumman är de första 4 byten från en dubbel SHA-256 av versionen och hashen. När hela nyttolasten kodas med Base58 fås den välkända adresssträngen.

Verktyget konverterar bara vanlig Base58. Använd en särskild Base58Check-validator när du behöver kontrollera en adressversion och kontrollsumma.

Alfabetvarianter

Variant Där den används Skillnader mot Bitcoin
Bitcoin BTC-adresser, IPFS CIDv0 Baslinje
Ripple XRP-adresser Bytta positioner
Flickr Korta foto-URL:er Gemener före versaler

Varför inte bara använda Base64?

Base64 har ingen längdförändring mellan binär och kodad text (4 tecken per 3 bytes), vilket är effektivt. Base58 har något varierande overhead men inga tvetydiga tecken, vilket är vad du vill ha när någon måste kopiera en adress för hand eller läsa upp den i telefon.

Vanliga frågor

Inte generellt. Base58 är bättre när människor hanterar strängen; Base64 är bättre när maskiner skickar runt den. Base64 kodar 6 bitar per tecken jämfört med Base58:s cirka 5.86, så Base64 är något mer kompakt.

Base58 kodar ett stort heltal, så längden varierar med ett eller två tecken beroende på de mest signifikanta bitarna. Typiska P2PKH-adresser är 34 tecken men 33 är möjligt.

Verktyget kan avkoda strängen till råa byte. Välj hexadecimal utdata för att visa valfria byte utan förlust. Versionen och kontrollsumman kontrolleras inte, så en lyckad avkodning bevisar inte att adressen är giltig. Använd en Base58Check-validator för det.

Ja. Varje nollbyte i början av indatan blir ett 1-tecken i utdata, vilket är så Bitcoin-adresser som börjar med 1 fungerar.

Relaterade verktyg