Encoder dan Decoder Base58

Langkah 1 / 333%

Masukan


            

Base58 adalah pengodean biner ke teks yang dirancang untuk menghindari beberapa karakter yang mudah tertukar. Alfabet Bitcoin tidak memakai 0 O I l maupun + /; sistem lain menyusun 58 simbol yang sama dalam urutan berbeda. Contoh yang umum adalah alamat Bitcoin lama dengan Base58Check dan string IPFS CIDv0. Alat khusus browser ini mengonversi teks UTF-8 atau byte heksadesimal yang tepat dengan alfabet Bitcoin, Ripple, atau Flickr, serta menolak karakter di luar alfabet yang dipilih.

Cara mengodekan dan mendekode Base58

  1. 1

    Masukkan byte atau string Base58

    Arah pengodean menerima heksadesimal atau teks mentah; arah pendekodean menerima Base58.

  2. 2

    Pilih alfabet jika perlu

    Default adalah Base58 Bitcoin; varian Ripple dan Flickr tersedia untuk kompatibilitas.

  3. 3

    Jalankan konversi

    Base58 tidak memecah menjadi grup 5 atau 6 bit yang rapi; ia diperlakukan sebagai satu bilangan bulat big-endian, dibagi 58 berulang kali.

  4. 4

    Salin hasil

    String yang dikodekan mempertahankan byte nol di awal sebagai karakter `1` di awal (karakter penanda nol dalam alfabet Bitcoin).

Alfabet Bitcoin Base58

123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

Perhatikan yang hilang: 0, O, I, l. Karakter pertama dalam alfabet adalah 1, yang merepresentasikan bilangan bulat 0.

Cara kerjanya sebenarnya

Tidak seperti Base64 yang memecah bit dalam grup tetap, Base58 memperlakukan seluruh string byte sebagai satu bilangan bulat big-endian N dan menyatakannya dalam basis 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'

Karena itu pengodean Base58 tidak mudah dialirkan (streaming) - Anda membutuhkan seluruh angka sebelum bisa mengeluarkan karakter apa pun.

Base58 vs Base58Check

Payload Base58Check yang umum untuk alamat P2PKH lama berukuran 25 byte: 1 byte versi, 20 byte hash, dan 4 byte checksum. Checksum adalah 4 byte pertama dari digest SHA-256 ganda atas versi dan hash. Pengodean seluruh payload itu sebagai Base58 menghasilkan string alamat yang dikenal.

Alat ini hanya mengonversi Base58 biasa. Gunakan validator Base58Check khusus saat Anda perlu memeriksa versi dan checksum alamat.

Varian alfabet

Varian Digunakan di Perbedaan vs Bitcoin
Bitcoin Alamat BTC, IPFS CIDv0 Acuan dasar
Ripple Alamat XRP Posisi ditukar
Flickr URL foto pendek Huruf kecil sebelum huruf besar

Mengapa tidak memakai Base64 saja?

Base64 memakai 4 karakter terkode untuk setiap 3 byte masukan sebelum padding, sehingga pertambahan panjangnya tetap dan efisien. Base58 memiliki tambahan panjang yang sedikit bervariasi tetapi menghindari beberapa karakter ambigu, sehingga membantu ketika orang menyalin pengidentifikasi dengan tangan atau membacakannya.

Pertanyaan yang Sering Diajukan

Tidak selalu. Base58 lebih baik ketika manusia menangani string; Base64 lebih baik ketika mesin memindahkannya. Base64 mengodekan 6 bit per karakter dibandingkan sekitar 5,86 milik Base58, jadi Base64 sedikit lebih ringkas.

Base58 mengodekan bilangan bulat besar, sehingga panjangnya bervariasi satu atau dua karakter tergantung pada bit orde tinggi. Alamat P2PKH umumnya 34 karakter, tetapi 33 mungkin terjadi.

Alat ini dapat mendekode string menjadi byte mentah; pilih keluaran heksadesimal agar byte apa pun tetap terlihat. Alat ini tidak memeriksa versi atau checksum, sehingga hasil decode bukan bukti bahwa alamat valid. Gunakan validator Base58Check untuk pemeriksaan tersebut.

Ya. Setiap byte nol di awal masukan menjadi karakter 1 pada keluaran, begitulah cara kerja alamat Bitcoin yang dimulai dengan 1.

Alat Terkait