Encoder dan Decoder Base58
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
Masukkan byte atau string Base58
Arah pengodean menerima heksadesimal atau teks mentah; arah pendekodean menerima Base58.
-
2
Pilih alfabet jika perlu
Default adalah Base58 Bitcoin; varian Ripple dan Flickr tersedia untuk kompatibilitas.
-
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
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
Generator Hash bcrypt
Buat hash bcrypt atau verifikasi password plaintext terhadap hash bcrypt yang sudah ada. Mode generate dan verify berdampingan dalam satu tool.
Encoder dan Decoder Base85
Encode dan decode Base85 dalam varian Adobe Ascii85 (PostScript/PDF) atau Z85 (ZeroMQ). Lebih ringkas daripada Base64 untuk data biner.
Pengode sandi A1Z26
Kodekan teks dengan sandi A1Z26 (A=1, B=2, ... Z=26) atau baca kembali urutan angka menjadi huruf, dengan pemisah yang bisa disesuaikan.
Enkripsi / Dekripsi AES
Enkripsi dan dekripsi teks berisiko rendah dengan cipher AES OpenSSL. Passphrase di-hash dengan SHA-256 dan output Base64 berisi IV plus teks terenkripsi.
Encoder Sandi Atbash
Encode atau decode teks dengan sandi Atbash, substitusi Ibrani yang memetakan A-Z menjadi Z-A. Operasi yang sama mengenkripsi dan mendekripsi.
Encoder dan Decoder Base32
Encode dan decode string Base32 memakai alfabet RFC 4648. Berguna untuk secret TOTP, token case-insensitive, dan identifier yang diketik manusia.