Apa Itu Base64 Encoding? Panduan Lengkap untuk Pemula

01 Jan 2026 1,698 words

Apa Itu Base64 Encoding?

Base64 adalah skema encoding biner-ke-teks yang merepresentasikan data biner dalam format string ASCII. Skema ini umum digunakan ketika ada kebutuhan untuk mengenkode data biner, terutama saat mentransfer data melalui media yang dirancang untuk menangani data tekstual. Jika Anda pernah melihat string karakter seperti aGVsbG8gd29ybGQ= dan bertanya-tanya apa artinya, Anda telah menemukan Base64 encoding. Panduan ini menjelaskan apa itu Base64, cara kerjanya di balik layar, mengapa ia ada, dan kapan Anda harus menggunakannya.

Alasan mendasar mengapa Base64 ada adalah karena banyak protokol transport dan format data dirancang untuk teks, bukan data biner. Email awalnya dirancang hanya untuk membawa teks ASCII 7-bit. JSON dan XML adalah format berbasis teks. URL memiliki set karakter yang terbatas. Ketika Anda perlu mengirim file gambar, kunci kriptografi, atau data biner lainnya melalui saluran ini, Anda memerlukan cara untuk merepresentasikan byte biner sebagai karakter teks yang aman. Base64 memecahkan masalah ini dengan memetakan byte arbitrer ke dalam kumpulan 64 karakter aman.

Masalah yang Dipecahkan Base64

Bayangkan Anda ingin mengirim foto ke teman melalui email. Foto tersebut disimpan sebagai file biner. Ketika Anda melampirkannya ke email, klien dan server email harus mengenkode data biner tersebut agar dapat melewati infrastruktur email dengan aman, yang dirancang untuk pesan teks. Sistem email awal dapat merusak data biner karena mereka menafsirkan nilai byte tertentu sebagai karakter kontrol atau menghilangkan bit tinggi dari setiap byte.

Base64 memecahkan ini dengan merepresentasikan data biner hanya menggunakan karakter yang didukung secara universal dalam sistem berbasis teks: huruf besar, huruf kecil, digit, dan dua karakter tambahan (+ dan /), plus karakter padding (=). Ini memastikan bahwa data yang dienkode dapat bertahan melalui transmisi melalui sistem apa pun yang menangani teks ASCII.

Cara Kerja Base64

Base64 mengonversi grup 3 byte (24 bit) menjadi 4 grup yang masing-masing terdiri dari 6 bit. Setiap grup 6-bit dipetakan ke karakter dari alfabet Base64. Prosesnya bersifat deterministik dan dapat dibalikkan sepenuhnya, artinya string yang dienkode Base64 dapat didekode kembali ke data biner asli.

Proses Langkah demi Langkah

Mari kita telusuri proses encoding teks "Man" untuk memahami mekanismenya.

  1. Ambil nilai ASCII dari setiap karakter:

    • M = 77 (desimal) = 01001101 (biner)
    • a = 97 (desimal) = 01100001 (biner)
    • n = 110 (desimal) = 01101110 (biner)
  2. Gabungkan nilai 8-bit menjadi satu urutan 24-bit:

    • 01001101 01100001 01101110
  3. Bagi urutan 24-bit menjadi empat grup 6-bit:

    • 010011 = 19
    • 010110 = 22
    • 000101 = 5
    • 101110 = 46
  4. Petakan setiap nilai 6-bit ke karakter alfabet Base64 yang sesuai menggunakan tabel indeks:

    • 19 → T
    • 22 → W
    • 5 → F
    • 46 → u
  5. Hasil: "TWFu"

Penanganan Padding

Apa yang terjadi ketika panjang input bukan kelipatan 3 byte? Base64 menggunakan padding untuk menangani kasus ini. Jika grup terakhir hanya memiliki 1 byte (8 bit), ia akan ditambahi 4 bit nol untuk membentuk dua grup 6-bit, dan dua karakter padding (==) ditambahkan. Jika grup terakhir memiliki 2 byte (16 bit), ia akan ditambahi 2 bit nol untuk membentuk tiga grup 6-bit, dan satu karakter padding (=) ditambahkan.

Sebagai contoh, encoding satu byte "M" (01001101):

  • Grup 24-bit: 01001101 00000000 00000000 (ditambahi nol)
  • Grup 6-bit: 010011 = 19 → T, 010000 = 16 → Q, 000000 = 0 → A, 000000 = 0 → A
  • Namun karena hanya 1 byte yang disediakan, kita menambahkan padding ==
  • Hasil: "TQ=="

Padding memastikan bahwa panjang output yang dienkode selalu kelipatan 4 karakter. Decoder menggunakan padding untuk menentukan berapa banyak byte yang harus dibuang saat mengonversi kembali ke biner.

Alfabet Base64 Lengkap

Nilai Karakter Nilai Karakter Nilai Karakter Nilai Karakter
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 n 55 3
8 I 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /

Karakter padding = digunakan ketika panjang data input bukan kelipatan 3 byte.

Kasus Penggunaan Umum

Base64 encoding muncul dalam berbagai konteks di seluruh pengembangan web dan rekayasa perangkat lunak.

Kasus Penggunaan Deskripsi
Data URI Menyematkan gambar dalam HTML atau CSS
HTTP Basic Auth Mengenkode kredensial di header
Payload JSON/XML Menyimpan data biner dalam format teks
Lampiran Email MIME Base64 encoding
Token JWT Encoding header dan payload

Data URI

Data URI memungkinkan Anda menyematkan gambar, font, dan sumber daya lainnya langsung di file HTML atau CSS. Alih-alih menautkan ke file gambar eksternal, Anda mengenkode gambar sebagai Base64 dan menyertakannya secara inline:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...">

Ini menghilangkan permintaan HTTP dengan konsekuensi peningkatan ukuran sebesar 33 persen. Data URI paling bermanfaat untuk aset kecil seperti ikon, logo, dan elemen UI.

HTTP Basic Authentication

HTTP Basic Authentication mengirimkan kredensial sebagai string yang dienkode Base64 di header Authorization. Formatnya adalah Basic base64(username:password). Perhatikan bahwa Base64 bukan enkripsi; kredensial dapat didekode dengan mudah oleh siapa pun yang mencegat permintaan. Basic Auth harus selalu digunakan melalui HTTPS untuk melindungi kredensial selama transmisi.

Authorization: Basic am9objpzZWNyZXQ=

Mendekode am9objpzZWNyZXQ= menghasilkan john:secret.

Payload JSON dan XML

Ketika Anda perlu menyertakan data biner (seperti unggahan file, kunci kriptografi, atau thumbnail gambar) dalam payload JSON atau XML, Base64 adalah pendekatan standar. Data biner dikonversi menjadi string Base64 dan disertakan sebagai nilai properti:

{
  "filename": "photo.jpg",
  "data": "/9j/4AAQSkZJRgABAQAAAQABAAD//gA..."
}

Lampiran Email (MIME)

Standar MIME (Multipurpose Internet Mail Extensions) menggunakan Base64 untuk mengenkode lampiran email. Ketika Anda mengirim email dengan gambar terlampir, klien email Anda mengonversi gambar ke Base64, membungkusnya dalam header MIME yang sesuai, dan menyertakannya di badan email. Klien email penerima mendekode Base64 kembali ke file gambar asli.

Token JWT

JSON Web Token (JWT) menggunakan varian Base64 yang aman untuk URL yang disebut Base64URL untuk mengenkode header dan payload. Base64URL mengganti + dengan - dan / dengan _, serta menghilangkan padding =. Hasilnya adalah token yang ringkas dan aman untuk URL yang membawa informasi autentikasi dan otorisasi.

Encoding dan Decoding dalam Kode

Sebagian besar bahasa pemrograman menyediakan fungsi bawaan untuk encoding dan decoding Base64.

JavaScript (Browser)

// Encoding
const encoded = btoa('Hello, World!');
console.log(encoded); // "SGVsbG8sIFdvcmxkIQ=="

// Decoding
const decoded = atob(encoded);
console.log(decoded); // "Hello, World!"

Node.js

const encoded = Buffer.from('Hello, World!').toString('base64');
console.log(encoded); // "SGVsbG8sIFdvcmxkIQ=="

const decoded = Buffer.from(encoded, 'base64').toString('utf-8');
console.log(decoded); // "Hello, World!"

Python

import base64

encoded = base64.b64encode(b'Hello, World!')
print(encoded)  # b'SGVsbG8sIFdvcmxkIQ=='

decoded = base64.b64decode(encoded)
print(decoded)  # b'Hello, World!'

PHP

$encoded = base64_encode('Hello, World!');
echo $encoded; // "SGVsbG8sIFdvcmxkIQ=="

$decoded = base64_decode($encoded);
echo $decoded; // "Hello, World!"

Overhead Ukuran

Base64 encoding meningkatkan ukuran data sekitar 33 persen. Untuk setiap 3 byte input, Base64 menghasilkan 4 byte output. Overhead ini adalah harga yang harus dibayar untuk membuat data biner aman bagi sistem berbasis teks.

Untuk keperluan praktis, file biner 1 MB menjadi sekitar 1,37 MB setelah encoding Base64. Sebelum mengenkode data dalam jumlah besar dengan Base64, pertimbangkan apakah overhead encoding dapat diterima untuk kasus penggunaan Anda. Untuk data dalam jumlah kecil (ikon, token, pesan pendek), overheadnya dapat diabaikan. Untuk file besar (foto, video, arsip), overhead mungkin signifikan, dan pendekatan alternatif harus dipertimbangkan.

Varian Base64

Alfabet Base64 standar yang dijelaskan di atas bukan satu-satunya varian. Aplikasi yang berbeda menggunakan alfabet yang sedikit berbeda untuk menyesuaikan dengan kendala spesifik mereka.

Base64URL mengganti + dengan - dan / dengan _, serta menghilangkan padding. Varian ini aman digunakan dalam URL dan nama file tanpa encoding tambahan. Ini digunakan oleh JWT, token OAuth, dan API kriptografi web.

MIME Base64 adalah varian yang digunakan dalam email dan menyertakan pemisah baris setiap 76 karakter untuk mematuhi batasan panjang baris email.

PEM (Privacy-Enhanced Mail) menggunakan encoding Base64 dengan baris header dan footer (-----BEGIN CERTIFICATE-----) untuk mengenkode sertifikat X.509, kunci privat, dan objek kriptografi lainnya.

Mengapa Bukan Enkripsi?

Base64 bukan enkripsi. Ini adalah skema encoding, artinya dapat dengan mudah didekode tanpa kunci apa pun. Algoritmanya ditentukan secara publik, alfabetnya tetap, dan developer mana pun dapat mendekode string Base64 dalam hitungan menit menggunakan fungsi bawaan.

Jangan pernah menggunakan Base64 untuk melindungi data sensitif. Base64 tidak memberikan kerahasiaan, integritas, maupun autentikasi. Jika Anda perlu melindungi data dari akses tidak sah, gunakan algoritma enkripsi yang tepat seperti AES (simetris) atau RSA (asimetris). Jika Anda perlu memverifikasi bahwa data tidak dirusak, gunakan fungsi hash kriptografi seperti SHA256 yang dikombinasikan dengan tanda tangan digital atau HMAC.

Kesalahan umum yang dilakukan pemula adalah menganggap Base64 sebagai bentuk enkripsi karena outputnya terlihat seperti karakter acak. Pada kenyataannya, Base64 mudah dibalikkan dan tidak memberikan keamanan sama sekali. Selalu gunakan algoritma kriptografi yang sudah mapan untuk tujuan keamanan dan cadangkan Base64 untuk tujuan yang dimaksudkan: mengenkode data biner dengan aman untuk transportasi berbasis teks.


About this article

Pelajari apa itu Base64 encoding, cara kerjanya, dan mengapa developer menggunakannya. Panduan ramah pemula dengan contoh praktis.


Related Articles


Related Tools

Help2Code Logo
Menu