Encoder dan Decoder Base58Check

Tambahkan checksum SHA-256 ganda 4 byte dan enkode ke Base58, atau dekode string Base58Check, verifikasi checksum-nya, lalu baca byte versi dan payload-nya.

Berjalan sepenuhnya di browser Anda. Tidak ada yang diunggah.

Cara menggunakan

  1. Pilih Enkode untuk membuat string Base58Check, atau Dekode untuk memverifikasinya dan memulihkan byte-nya.
  2. Untuk mengenkode, setel masukan ke Hex lalu masukkan byte versi diikuti payload, misalnya 00 dan HASH160 sepanjang 20 byte.
  3. Biarkan opsi Checksum Base58Check aktif. Checksum ditambahkan saat mengenkode dan diverifikasi saat mendekode.
  4. Untuk mendekode, tempel string-nya dan setel keluaran ke Hex. Anda akan mendapatkan byte versi dan payload tanpa checksum.

Cara kerja Base58Check

  1. Mulailah dengan byte versi yang menyatakan jenis data, diikuti payload, misalnya hash kunci publik sepanjang 20 byte.
  2. Hash byte tersebut dengan SHA-256, hash hasilnya sekali lagi dengan SHA-256, lalu ambil 4 byte pertama sebagai checksum.
  3. Tambahkan checksum di bagian akhir dan enkode semuanya dengan Base58. Setiap byte 0x00 di awal menjadi 1.

Alat ini menghitung checksum tepat atas byte yang Anda masukkan. Alat ini tidak menambahkan byte versi untuk Anda, jadi sertakan byte tersebut di awal masukan. Saat mendekode, checksum dihitung ulang atas semua byte kecuali 4 byte terakhir. Jika cocok, Anda mendapatkan byte versi dan payload; jika tidak, muncul galat checksum. Salah ketik acak hanya lolos sekitar satu kali dalam empat miliar percobaan.

Byte versi yang umum

Byte versiDataString hasil enkode diawali
0x00Alamat Bitcoin P2PKH (HASH160 20 byte)1
0x05Alamat Bitcoin P2SH (hash skrip 20 byte)3
0x6FAlamat P2PKH testnet Bitcoinm atau n
0x80Kunci privat WIF (32 byte, ditambah 0x01 untuk kunci terkompresi)5, atau K / L jika terkompresi

Alamat SegWit dan Taproot yang diawali bc1 memakai Bech32, bukan Base58Check, dan tidak dapat didekode di sini. Alamat XRP Ledger memakai checksum yang sama dengan alfabet Ripple: pilih Ripple pada opsi Alfabet.

Contoh: dari HASH160 ke alamat

Alamat terkenal yang dikaitkan dengan blok genesis Bitcoin terdiri dari byte versi 00 diikuti HASH160 sepanjang 20 byte. Jika dimasukkan sebagai masukan Hex dengan Checksum Base58Check aktif, hasilnya adalah alamat yang sudah dikenal luas:

Masukan (Hex)  00 62e907b15cbf27d5425399ebf6f0fb50ebb88f18
Keluaran       1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

Dalam kode, paket Python base58 menyediakan b58encode_check() dan b58decode_check(), sedangkan paket npm bs58check menawarkan encode() dan decode().

Spesifikasi

Alfabet1-9 A-Z a-z tanpa 0 O I l
Ukuran keluaranSekitar 137% ditambah checksum 4 byte
PaddingTidak ada
StandarBitcoin Base58Check
Peka huruf besar-kecilYa

Contoh

Masukan (UTF-8)Keluaran
Hello, World!gTazoqFvnegwaKM8v1B33sR
Base64.is6XgW4KVJr8DBmZEAeJ
你好DrMzxHL43oWHbW

Pertanyaan yang sering diajukan

Mengapa dekode gagal dengan galat checksum?
Kemungkinan ada karakter yang salah ketik, alfabet yang dipilih keliru, atau string tersebut adalah Base58 biasa tanpa checksum. String Base58 biasa, seperti alamat Solana dan CID IPFS, sebaiknya didekode di halaman Base58.
Apakah alat ini menambahkan byte versi untuk saya?
Tidak. Checksum dihitung atas byte yang Anda masukkan, jadi byte versi harus menjadi bagian dari masukan Anda. Atur Masukan sebagai ke Hex dan ketik byte versi terlebih dahulu, misalnya 00 untuk alamat Bitcoin.
Bisakah saya mendekode kunci privat WIF?
Bisa. Tempel kunci tersebut di tab Dekode dan pilih keluaran Hex. Anda akan mendapatkan 80, kunci 32 byte, dan untuk kunci terkompresi, 01 di bagian akhir. Dekode berjalan secara lokal di browser Anda, tetapi tetap perlakukan kunci privat asli dengan hati-hati.
Bisakah saya mendekode alamat bc1?

Tidak. Alamat Native SegWit dan Taproot memakai Bech32 atau Bech32m, pengodean lain dengan checksum tersendiri. Di Bitcoin, Base58Check hanya dipakai untuk alamat lama yang diawali 1 atau 3 (m, n, atau 2 di testnet).