Encoder/Decoder Base64
Base64 adalah skema encoding biner-ke-teks yang merepresentasikan data biner menggunakan 64 karakter ASCII. Umumnya digunakan untuk menyematkan data biner dalam format berbasis teks seperti JSON, XML, dan URL. Alat ini mendekode Base64 untuk mengungkap konten asli dan secara otomatis mendeteksi jika hasilnya adalah JSON, XML, atau format lain yang dapat diurai.
Spesifikasi
Kasus Penggunaan Umum
- Decode payload API dan webhook yang dienkode Base64
- Memeriksa data yang dienkode dalam token JWT
- Decode lampiran email (MIME Base64)
- Debug pesan error dan stack trace yang dienkode
- Melihat nilai konfigurasi yang dienkode dalam variabel lingkungan
Fitur
- Decode Base64 standar ke teks UTF-8
- Menangani varian Base64 URL-safe (- dan _ sebagai pengganti + dan /)
- Deteksi otomatis tipe konten yang didekode (JSON, XML, dll.)
- Rantai ke parser yang sesuai ketika data terstruktur terdeteksi
- Encode teks ke Base64
- Pratinjau gambar untuk data gambar biner yang didekode
- Hex viewer untuk data biner non-UTF-8
- Lencana deteksi format (Standard / URL-Safe / Mixed)
Contoh
Tips
- Base64 adalah encoding, bukan enkripsi. Tidak memberikan keamanan apapun.
- Padding = di akhir dapat dihilangkan dalam beberapa implementasi.
- Base64 URL-safe mengganti + dengan - dan / dengan _ untuk menghindari masalah encoding URL.
- Base64 meningkatkan ukuran data sekitar 33%.
Pemahaman Encoder/Decoder Base64
Base64 adalah skema encoding biner-ke-teks yang didefinisikan dalam RFC 4648 yang merepresentasikan data biner arbitrer menggunakan 64 karakter ASCII yang dapat dicetak (A-Z, a-z, 0-9, +, /) ditambah karakter padding (=). Tujuan utamanya adalah mentransport data biner melalui sistem berbasis teks yang mungkin tidak menangani byte mentah dengan benar, seperti email, payload JSON, dokumen XML, dan parameter URL.
Proses encoding mengambil setiap tiga byte (24 bit) input dan membaginya menjadi empat grup 6-bit. Setiap nilai 6-bit dipetakan ke salah satu dari 64 karakter. Ketika panjang input bukan kelipatan tiga byte, padding dengan satu atau dua karakter = mengisi output menjadi kelipatan empat karakter. Ini berarti data yang dienkode Base64 sekitar 33% lebih besar dari aslinya.
Dua varian utama ada. Base64 standar menggunakan + dan / dan digunakan dalam encoding email MIME. Base64 URL-safe (base64url) mengganti + dengan - dan / dengan _ untuk menghindari karakter yang dicadangkan URL. Token JWT menggunakan varian URL-safe tanpa padding. Beberapa implementasi menghilangkan padding = di akhir karena panjang data asli dapat disimpulkan.
Base64 muncul di mana-mana dalam pengembangan web. Data URI menyematkan gambar dan font dalam HTML/CSS. Token JWT adalah tiga segmen yang dienkode Base64url. Pesan SAML adalah XML yang dienkode Base64. Respons API mungkin mengenkode konten biner sebagai Base64 dalam JSON. Yang penting, Base64 adalah encoding, bukan enkripsi — tidak memberikan keamanan atau kerahasiaan sama sekali.
Base64 bukan bentuk enkripsi dan tidak boleh diperlakukan seperti itu. Ia mengubah data menjadi representasi berbeda tanpa kunci atau rahasia apapun, dan siapapun dapat mendekode string Base64 secara instan. Jika data sensitif dienkode dalam Base64, data tersebut sepenuhnya terekspos. Untuk data yang perlu dirahasiakan, gunakan algoritma enkripsi yang sebenarnya seperti AES atau RSA. Base64 standar menggunakan + dan / sebagai karakter 62 dan 63, sementara Base64 URL-safe (base64url, didefinisikan dalam RFC 4648 Bagian 5) menggantinya dengan - dan _ karena + dan / memiliki makna khusus dalam URL. Token JWT selalu menggunakan varian URL-safe tanpa padding.
Karakter padding = memastikan panjang output yang dienkode selalu kelipatan 4 karakter. Karena Base64 mengenkode 3 byte menjadi 4 karakter, input yang panjangnya bukan kelipatan 3 membutuhkan padding: 1 byte sisa menghasilkan ==, dan 2 byte sisa menghasilkan =. Beberapa implementasi, termasuk JWT, menghilangkan padding sepenuhnya karena decoder dapat menghitung panjang asli dari panjang string yang dienkode.
Peningkatan ukuran 33% adalah bawaan dari encoding: setiap 3 byte (24 bit) menjadi 4 karakter ASCII (32 bit), rasio ekspansi tetap 4/3 yang tidak dapat dikurangi. Jika ukuran menjadi masalah, kompres data sebelum encoding. Untuk aset biner besar, pertimbangkan mekanisme transfer biner yang tepat seperti unggahan multipart atau frame WebSocket biner daripada menyematkan Base64 dalam format teks.