Encoder dan Decoder Base58

Ubah teks, byte hex, atau file kecil menjadi Base58 dan sebaliknya. Pilih alfabet Bitcoin, Flickr, atau Ripple, dan tambahkan atau verifikasi checksum Base58Check bila perlu.

Berjalan sepenuhnya di browser Anda. Tidak ada yang diunggah.

Cara menggunakan

  1. Pilih Enkode untuk mengubah teks atau byte menjadi Base58, atau Dekode untuk mengubah string Base58 kembali menjadi data.
  2. Pilih Alfabet. Bitcoin adalah pilihan default dan juga yang dipakai oleh IPFS dan Solana.
  3. Ketik atau tempel masukan Anda. Atur Masukan sebagai ke Hex jika Anda memiliki byte mentah seperti hash atau kunci publik.
  4. Aktifkan Checksum Base58Check hanya jika string tersebut membawa checksum 4 byte, lalu salin atau unduh hasilnya.

Apa itu Base58?

Base58 adalah pengodean biner ke teks yang dibuat untuk Bitcoin. Alfabetnya terdiri dari 62 digit dan huruf Latin dikurangi empat karakter yang mudah tertukar: 0 (nol), O (huruf O besar), I (huruf I besar), dan l (huruf L kecil). Base58 juga tidak memakai +, /, atau =, sehingga string Base58 dapat dipilih dengan klik ganda dan dimasukkan ke URL tanpa escape.

Berbeda dengan Base64, Base58 tidak memotong masukan menjadi kelompok bit. Seluruh masukan diperlakukan sebagai satu bilangan besar dan ditulis dalam basis 58, sehingga tidak ada padding dan perubahan pada satu byte dapat mengubah banyak karakter keluaran. Byte nol di awal tidak memiliki nilai numerik, jadi masing-masing ditulis sebagai karakter pertama alfabet (1 pada alfabet Bitcoin) agar tidak hilang. Ukuran keluarannya sekitar 1,37 kali ukuran masukan.

Penggunaan Base58

  • Bitcoin. Alamat lama (legacy) dan kunci privat WIF menggunakan Base58Check: Base58 dengan byte versi dan checksum.
  • IPFS. Content identifier versi 0 (CIDv0) adalah bentuk Base58 dari multihash SHA-256. Itulah sebabnya CID tersebut panjangnya 46 karakter dan diawali Qm.
  • Solana. Kunci publik, alamat akun, dan tanda tangan transaksi ditulis dalam Base58 biasa, tanpa checksum. Kunci 32 byte biasanya menjadi 43 atau 44 karakter.
  • Flickr dan XRP Ledger. Tautan pendek Flickr memakai alfabet Flickr, dan alamat XRP memakai alfabet Ripple, itulah sebabnya alamat tersebut diawali r.

Untuk berpindah antara Base58 dan byte mentah, gunakan Base58 ke Hex dan Hex ke Base58. Untuk pengenal yang cukup berisi huruf dan angka saja, bandingkan dengan Base62.

Alfabet Base58

AlfabetKarakter, sesuai urutan
Bitcoin123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
Flickr123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ
Ripplerpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz

Ketiganya memakai 58 karakter yang sama dengan urutan berbeda, sehingga string yang dienkode dengan satu alfabet akan didekode menjadi byte yang berbeda, atau gagal, jika memakai alfabet lain.

Base58 dalam kode

# Python (pip install base58)
import base58
base58.b58encode(b'hello')      # b'Cn8eVZg'
base58.b58decode('Cn8eVZg')     # b'hello'

// JavaScript (npm install bs58)
import bs58 from 'bs58';
bs58.encode(new TextEncoder().encode('hello'));

Spesifikasi

Alfabet1-9 A-Z a-z tanpa 0 O I l
Ukuran keluaranSekitar 137% (konversi bilangan besar)
PaddingTidak ada (byte nol di awal menjadi 1)
StandarBitcoin Base58
Peka huruf besar-kecilYa

Contoh

Masukan (UTF-8)Keluaran
Hello, World!72k1xXWG59fYdzSNoA
Base64.isr1Nm3AS7ZcnN
你好2xuZUfBKa

Pertanyaan yang sering diajukan

Mengapa byte nol di awal menjadi 1?
Base58 mengubah masukan menjadi satu bilangan, dan byte nol di awal tidak mengubah nilainya. Agar tetap tersimpan, setiap byte nol di awal ditulis sebagai karakter pertama alfabet, yaitu 1 pada alfabet Bitcoin. Itulah sebabnya 32 byte nol dienkode menjadi deretan 32 angka satu.
Apakah Base58 peka huruf besar-kecil?

Ya. Huruf besar dan huruf kecil merupakan digit yang berbeda, sehingga mengubah huruf besar-kecil satu karakter saja akan mengubah byte hasil dekode atau membuat string tidak valid.

Apa perbedaan Base58 dan Base58Check?
Base58Check menambahkan checksum 4 byte (bagian awal hash SHA-256 ganda) sebelum pengodean, sehingga salah ketik dapat dideteksi. Aktifkan opsi Checksum Base58Check di sini, atau lihat halaman Base58Check untuk detailnya.
Mengapa masukan dibatasi sekitar 20 KB?
Karena seluruh masukan adalah satu bilangan besar, beban kerjanya tumbuh sebanding dengan kuadrat panjangnya. Base58 dimaksudkan untuk kunci, hash, dan alamat, bukan file. Untuk data besar, gunakan Base64 atau Base85.