Cara menggunakan
- Pilih Enkode untuk mengubah teks atau byte menjadi Base58, atau Dekode untuk mengubah string Base58 kembali menjadi data.
- Pilih Alfabet. Bitcoin adalah pilihan default dan juga yang dipakai oleh IPFS dan Solana.
- Ketik atau tempel masukan Anda. Atur Masukan sebagai ke Hex jika Anda memiliki byte mentah seperti hash atau kunci publik.
- 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
| Alfabet | Karakter, sesuai urutan |
|---|---|
| Bitcoin | 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz |
| Flickr | 123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ |
| Ripple | rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz |
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
| Alfabet | 1-9 A-Z a-z tanpa 0 O I l |
|---|---|
| Ukuran keluaran | Sekitar 137% (konversi bilangan besar) |
| Padding | Tidak ada (byte nol di awal menjadi 1) |
| Standar | Bitcoin Base58 |
| Peka huruf besar-kecil | Ya |
Contoh
| Masukan (UTF-8) | Keluaran |
|---|---|
Hello, World! | 72k1xXWG59fYdzSNoA |
Base64.is | r1Nm3AS7ZcnN |
你好 | 2xuZUfBKa |
Pertanyaan yang sering diajukan
Mengapa byte nol di awal menjadi 1?
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.