Apa arti « encoder » dan « decoder » dalam Base64?
Mengencode ke Base64 (« encode base64 ») mengubah byte — biasanya byte teks yang di-encode dengan UTF-8 — menjadi string 64 karakter yang diizinkan: 26 huruf kapital, 26 huruf kecil, 10 angka, lalu + dan /. Mendekode Base64 (« decode base64 ») melakukan tepat operasi sebaliknya: string dibaca empat karakter sekaligus, setiap karakter mewakili 6 bit, dan 24 bit menghasilkan 3 byte. Inilah bolak-balik yang dicari kebanyakan orang saat mengetik « encode and decode base64 ».
Base64 bukan kompresi maupun enkripsi: teks menjadi sekitar sepertiga lebih panjang, dan siapa pun bisa membacanya dalam sekejap. Gunanya adalah mengangkut byte melalui kanal yang hanya menerima karakter ASCII yang aman — URL, header HTTP, file konfigurasi, JSON, SVG inline, email, dan basis data teks.
Cara mengencode teks ke Base64
Langkah 1: teks terlebih dahulu diubah menjadi byte dengan karakter set yang dipilih — UTF-8 secara default, meski Latin-1, Windows-1252, ASCII, atau UTF-16 tetap berguna untuk data lama. Langkah 2: byte dibaca tiga per tiga, yaitu 24 bit. Langkah 3: 24 bit itu dibagi menjadi empat blok 6 bit, dan setiap blok diganti dengan karakter pada posisi yang sesuai dalam alfabet. Langkah 4: bila kelompok terakhir tidak lengkap, ia dilengkapi bit nol dan string ditutup dengan satu atau dua = (padding).
Contoh langkah demi langkah: « AB » bernilai 65 lalu 66 dalam desimal, yaitu 01000001 01000010. Dalam tiga byte dengan padding: 01000001 01000010 00000000. Empat kelompok 6 bit tersebut adalah 010000 010100 001000 000000 → posisi 16, 20, 8, 0 → QUI=. Cukup ketik « AB » di encoder: hasilnya muncul bahkan sebelum Anda melepas tombolnya.
Cara mendekode Base64 ke teks
Dekoding membaca string per kelompok 4 karakter setelah menghapus ganti baris dan spasi yang mungkin ada. Setiap karakter diganti dengan nilainya 6 bit, empat nilai digabungkan menjadi 24 bit, lalu 24 bit dibagi menjadi 3 byte. Karakter = yang ada di akhir menunjukkan berapa byte bermanfaat yang dimiliki kelompok terakhir: satu = berarti 2 byte, dua = berarti 1 byte.
Jika string berisi - atau _, itu adalah varian URL-safe: alat mengonversinya secara otomatis menjadi + dan / sebelum dekoding. Jika padding hilang, tombol « Perbaiki padding » mengembalikannya. Bila ada karakter di luar alfabet, tab pada posisi salah, atau panjang bukan kelipatan 4, kesalahan ditampilkan dengan alasan yang tepat, bukan sekadar « tidak valid ».
Varian URL-safe (RFC 4648 §5)
Base64 standar menggunakan + dan /, dua karakter yang bermasalah di URL: + diinterpretasikan sebagai spasi oleh sebagian besar server, dan / bisa disangka sebagai pemisah path. Varian URL-safe menggantikannya dengan - dan _, yang tidak memerlukan escape apa pun. Varian ini wajib dalam JWT (tiga segmen token dikode tanpa padding), dalam cookie, identifikator dan parameter URL.
Padding « = »: untuk apa
Base64 bekerja per kelompok 4 karakter, tetapi ukuran file hampir tidak pernah kelipatan 3 byte. Padding mengembalikan panjang yang diharapkan: 1 byte tersisa menghasilkan ==, 2 byte tersisa menghasilkan =. Beberapa sistem menghapusnya (beberapa API, Base64URL); lainnya mensyaratkannya (PHP, decoder lama). Opsi « Tanpa padding » pada encoder dan tombol « Perbaiki padding » pada decoder mencakup kedua kasus.
Encoding karakter: UTF-8, Latin-1, UTF-16
Base64 tidak mengenal karakter, hanya byte. Maka pertanyaan kuncinya: dengan apa teks di-encode sebelum Base64? Dalam UTF-8, « é » terdiri dari 2 byte dan « 日 » 3 byte; dalam Latin-1, « é » muat dalam 1 byte tetapi « 日 » menjadi mustahil. Dekoding UTF-8 atas string yang di-encode dengan Latin-1 menghasilkan karakter aneh (« mojibake »). Jika Anda menanyakan hasilnya ke tool online dan hasilnya tidak masuk akal, encoding awal hampir selalu berbeda — itulah alasan enam opsi di sini.
File, data URI, dan gambar dalam Base64
Sebuah data URI memiliki bentuk data:<tipe MIME>;base64,<data>. Ia memungkinkan Anda menyematkan gambar langsung di CSS, HTML, atau JSON: background-image:url(data:image/png;base64,iVBOR…). Untuk mendekode, tempel seluruh string ke tab « File ⇄ Base64 »: tipe MIME diekstrak, nama disarankan, lalu file dibangun ulang dan siap diunduh. Perhatikan ukurannya: Base64 menambah sekitar 33 % dan data URI tidak pernah di-cache secara terpisah.
Base64, URL-encoding, dan mengapa keduanya tidak boleh tertukar
Sedangkan percent-encoding (%20, %C3%A9) menggantikan setiap byte yang tidak diizinkan dengan persentase: panjangnya dua sampai tiga kali Base64, namun teks asli tetap terbaca. Base64 menghasilkan string ringkas dan rapi, sempurna untuk blob, tetapi tidak terbaca. Tab « URL & data URI » menawarkan kedua konversi berdampingan untuk menghindari kesalahan klasik meng-encode URL ke Base64 padahal seharusnya di-escape — atau sebaliknya.
Base64 dalam format sehari-hari
Base64 ada di mana-mana: tiga segmen JWT, atribut src pada gambar SVG inline, kolom cert pada PDF, lampiran MIME pada email (RFC 2045), Authorization: Basic dari API (pengguna:katasandi), file .pem dan kunci SSH, isi .docx dan .xlsx (ZIP), avatar di penyimpanan klien, dan data- attributes pada tes otomatis. Mengetahui cara encode dan decode dengan cepat menghindari harus membuka terminal hanya untuk satu string.
Apa yang bukan Base64
Base64 tidak mengenkripsi apa pun: string terkode dapat dibaca kembali dengan satu baris kode. Jangan pernah menggunakannya untuk melindungi kata sandi, kunci API, atau data pribadi. Base64 juga bukan kompresi: selalu siapkan tambahan 33 % ukuran. Terakhir, Base64 tidak cocok untuk biner terkompresi yang sudah padat (PNG, ZIP) di atas beberapa megabyte, di mana biaya memori menjadi masalah.
Performa dan praktik terbaik
Di browser, TextEncoder dan TextDecoder memproses beberapa megabyte per detik; algoritma Base64 sendiri linier, tanpa rekursi maupun alokasi per karakter. File berukuran lebih dari 5 MB bisa memperlambat antarmuka: untuk batch yang lebih besar, sebaiknya gunakan Web Worker atau proses di sisi server. Selalu dokumentasikan encoding asli di samping string, dan uji round-trip (encode lalu decode) sebelum menyimpan hasil ke basis data.
Direkomendasikan untuk
Pengembang back-end dan front-end (token, data URI, header HTTP), integrator dan penulis teknis (SVG inline, gambar latar), administrator sistem dan DevOps (sertifikat, kunci, dump), tester dan pentester (Authorization Basic, fuzzing parameter), mahasiswa (memahami byte, ASCII, dan UTF-8), serta siapa pun yang memerlukan encoder decoder Base64 online yang cepat, lengkap, dan privat.