Base58-kodare och avkodare
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
Ange bytes eller en Base58-sträng
Kodningsriktningen accepterar hex eller rå text; avkodningsriktningen accepterar Base58.
-
2
Välj alfabet vid behov
Standard är Bitcoins Base58; Ripple- och Flickr-varianter finns för kompatibilitet.
-
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
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
bcrypt-generator
Generera en bcrypt-hash från ett klartextlösenord. Justerbar kostnadsfaktor från 4 till 14, kompatibel med Laravel, Django, Node och PHP.
AES kryptera / dekryptera
Kryptera och dekryptera text med låg risk med AES-chiffer från OpenSSL. Lösenfrasen hashas med SHA-256 och Base64-utdata innehåller IV plus chiffertext.
A1Z26-chifferkodare
Koda text med A1Z26-chiffret (A=1, B=2, ... Z=26) eller avkoda en siffersekvens tillbaka till bokstäver, med anpassningsbar separator.
Atbash-kodare
Koda eller avkoda text med Atbash-chiffret, en hebreisk substitutionsmetod som mappar A-Z till Z-A. Samma åtgärd krypterar och dekrypterar.
Base85-kodare och avkodare
Koda och avkoda Base85 i Adobe Ascii85- (PostScript/PDF) eller Z85-variant (ZeroMQ). Mer kompakt än Base64 för binär data.
bcrypt-hashgenerator
Generera bcrypt-hashar eller verifiera ett klartextlösenord mot en befintlig bcrypt-hash. Generera och verifiera sida vid sida i ett verktyg.