Semua artikel

Base64: untuk apa enkode dan bagaimana cara kerjanya

Base64 adalah cara merepresentasikan data biner apa pun sebagai teks yang hanya terdiri dari huruf, angka, dan karakter +, /, =. Ini tidak mengompresi atau mengenkripsi data — hasilnya sekitar sepertiga lebih besar, dan siapa pun yang mengetahui algoritmanya dapat membaca konten aslinya.

Cara kerja enkode

Byte masukan dikelompokkan menjadi tiga (24 bit) dan dibagi menjadi empat blok enam bit. Setiap blok sesuai dengan satu karakter dari alfabet Base64 (A–Z, a–z, 0–9, +, /). Jika panjang data masukan bukan kelipatan tiga byte, karakter pengisi = ditambahkan di akhir.

Untuk apa ini dibutuhkan

Banyak protokol dan format — email (MIME), URL, JSON, XML — dirancang untuk teks dan tidak menangani byte "mentah" dengan baik: byte nol, karakter kontrol, atau urutan yang bertentangan dengan sintaks format itu sendiri. Base64 mengatasi ini dengan mengubah data biner apa pun menjadi teks yang aman.

Kasus penggunaan umum

  • Lampiran email melalui MIME.
  • Mengirim gambar atau berkas kecil dalam API JSON.
  • Menyimpan data biner di kolom teks basis data atau berkas konfigurasi.
  • Mengenkode bagian header dan payload dari JWT.

Apa yang BUKAN Base64

Ini bukan enkripsi maupun hashing. Siapa pun dapat mendekode string Base64 kembali ke data aslinya tanpa kunci atau kata sandi — ini hanyalah format representasi, bukan langkah keamanan.

Alfabet standar dan URL-safe

Alfabet Base64 klasik menggunakan karakter + dan /, yang memiliki makna khusus dalam URL dan nama berkas. Untuk kasus seperti itu ada varian Base64URL, di mana + diganti dengan -, dan / dengan _. Jika hasil enkode standar disisipkan ke URL tanpa percent-encoding tambahan, karakter + dan / dapat merusak alamat atau bertentangan dengan pemisah path.

Kesalahan umum: padding yang terpotong atau "rusak"

Karakter = di akhir string bukan sampah, melainkan bagian dari enkode yang menunjukkan berapa byte yang kurang di blok terakhir. Jika string Base64 disalin tidak lengkap atau padding dihapus secara manual, decoder akan mengembalikan error atau hasil yang terpotong. Beberapa sistem (misalnya JWT) sengaja membuang =, sehingga panjangnya perlu dipulihkan sebelum decode.

Coba alat