Koder i dekoder Base58
Dane wejściowe
Base58 to kodowanie danych binarnych na tekst, zaprojektowane tak, aby unikać kilku łatwych do pomylenia znaków. Alfabet Bitcoin pomija 0 O I l oraz + /, a inne systemy ustawiają te same 58 symboli w innej kolejności. Znanymi przykładami są starsze adresy Bitcoin w Base58Check i ciągi IPFS CIDv0. To narzędzie działa wyłącznie w przeglądarce, konwertuje tekst UTF-8 lub dokładne bajty szesnastkowe z użyciem alfabetu Bitcoin, Ripple albo Flickr i odrzuca znaki spoza wybranego alfabetu.
Jak kodować i dekodować Base58
-
1
Wpisz bajty albo ciąg Base58
Kierunek kodowania przyjmuje hex albo surowy tekst; kierunek dekodowania przyjmuje Base58.
-
2
W razie potrzeby wybierz alfabet
Domyślnie używany jest Base58 Bitcoina; dla zgodności dostępne są warianty Ripple i Flickr.
-
3
Uruchom konwersję
Base58 nie dzieli danych na równe grupy 5- albo 6-bitowe; traktuje je jako jedną dużą liczbę big-endian, wielokrotnie dzieloną przez 58.
-
4
Skopiuj wynik
Zakodowane ciągi zachowują wiodące bajty zerowe jako wiodące znaki `1` (glif zera w alfabecie Bitcoin).
Alfabet Bitcoin Base58
123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
Zwróć uwagę, czego brakuje: 0, O, I, l. Pierwszy znak alfabetu to 1, który reprezentuje liczbę 0.
Jak to naprawdę działa
W przeciwieństwie do Base64, które dzieli bity na stałe grupy, Base58 traktuje cały ciąg bajtów jako jedną dużą liczbę big-endian N i zapisuje ją w podstawie 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'
Dlatego kodowanie Base58 jest nietrywialne do streamowania, potrzebujesz całej liczby, zanim możesz wyemitować jakikolwiek znak.
Base58 vs Base58Check
Typowy ładunek Base58Check starszego adresu P2PKH ma 25 bajtów: 1 bajt wersji, 20 bajtów skrótu i 4 bajty sumy kontrolnej. Suma to pierwsze 4 bajty podwójnego skrótu SHA-256 wersji i skrótu adresu. Zakodowanie całego ładunku w Base58 daje znany ciąg adresu.
To narzędzie konwertuje wyłącznie zwykły Base58. Do sprawdzenia wersji i sumy kontrolnej adresu użyj osobnego walidatora Base58Check.
Warianty alfabetu
| Wariant | Gdzie jest używany | Różnice względem Bitcoin |
|---|---|---|
| Bitcoin | Adresy BTC, IPFS CIDv0 | Punkt odniesienia |
| Ripple | Adresy XRP | Zamienione pozycje |
| Flickr | Krótkie URL-e zdjęć | Małe litery przed wielkimi |
Dlaczego nie użyć po prostu Base64?
Base64 ma niewielką zmianę długości między binariami a tekstem zakodowanym (4 znaki na 3 bajty), więc jest wydajne. Base58 ma lekko zmienny narzut, ale nie ma niejednoznacznych znaków, czego potrzebujesz, gdy ktoś musi przepisać adres ręcznie albo przeczytać go przez telefon.
Najczęściej zadawane pytania
Nie uniwersalnie. Base58 jest lepszy, gdy ciągiem operują ludzie; Base64 jest lepszy, gdy przenoszą go maszyny. Base64 koduje 6 bitów na znak wobec około 5.86 w Base58, więc Base64 jest trochę bardziej kompaktowy.
Base58 koduje dużą liczbę całkowitą, więc długość różni się o znak lub dwa zależnie od najbardziej znaczących bitów. Typowe adresy P2PKH mają 34 znaki, ale 33 są możliwe.
Narzędzie może zdekodować ciąg do surowych bajtów. Wybierz wyjście szesnastkowe, aby bezstratnie pokazać dowolne bajty. Nie sprawdza wersji ani sumy kontrolnej, więc udane dekodowanie nie dowodzi poprawności adresu. Do tego służy walidator Base58Check.
Tak. Każdy bajt zerowy na początku wejścia staje się znakiem 1 na wyjściu, tak działają adresy Bitcoin zaczynające się od 1.
Powiązane narzędzia
Koder szyfru A1Z26
Koduj tekst szyfrem A1Z26 (A=1, B=2, ... Z=26) albo dekoduj sekwencję liczb z powrotem na litery, z własnym separatorem.
Generator bcrypt
Wygeneruj hash bcrypt z hasła plaintext. Regulowany współczynnik kosztu od 4 do 14, zgodny z Laravel, Django, Node i PHP.
Koder szyfru Atbash
Koduj lub dekoduj tekst szyfrem Atbash, hebrajskim podstawieniem mapującym A-Z na Z-A. Ta sama operacja szyfruje i odszyfrowuje.
Generator hashy bcrypt
Generuj hashe bcrypt albo weryfikuj hasło plaintext względem istniejącego hasha bcrypt. Generowanie i weryfikacja obok siebie w jednym narzędziu.
Koder i dekoder Base32
Koduj i dekoduj ciągi Base32 alfabetem RFC 4648. Przydatne dla sekretów TOTP, tokenów niewrażliwych na wielkość liter i identyfikatorów wpisywanych przez ludzi.
Koder i dekoder Base85
Koduj i dekoduj Base85 w wariantach Adobe Ascii85 (PostScript/PDF) albo Z85 (ZeroMQ). Bardziej kompaktowy niż Base64 dla danych binarnych.