Tutorial 22 Feb 2026 10 min bacaan

Pengekodan Base64 Dijelaskan: Apa Itu, Bagaimana Ia Berfungsi dan Bila Menggunakannya

Panduan lengkap tentang pengekodan Base64: fahami algoritma, pelajari kes penggunaan biasa seperti data URI, lampiran e-mel dan token API, dan ketahui bila Base64 adalah pilihan yang tepat.

Base64 Encoding Explained - Visual Guide

Apa Itu Pengekodan Base64?

Base64 ialah skim pengekodan binari-ke-teks yang menukarkan data binari kepada jujukan aksara ASCII yang boleh dicetak. Nama "Base64" berasal daripada fakta bahawa ia menggunakan set 64 aksara untuk mewakili data. 64 aksara ini terdiri daripada huruf besar (A-Z), huruf kecil (a-z), digit (0-9), dan dua aksara tambahan, biasanya + dan /, dengan = digunakan sebagai aksara padding.

Base64 pada asalnya direka untuk membolehkan data binari dihantar melalui saluran yang hanya menyokong kandungan teks secara andal. Fikirkan ia sebagai penterjemah universal: ia mengambil sebarang jujukan bait, sama ada imej, dokumen atau data yang disulitkan, dan menukarkannya menjadi rentetan aksara yang boleh bergerak dengan selamat melalui protokol berasaskan teks seperti e-mel (SMTP), HTML, CSS, JSON dan XML.

Pengekodan ini ditakrifkan dalam RFC 4648, yang menyeragamkan beberapa abjad pengekodan Base. Varian yang paling biasa ditemui di web ialah abjad Base64 standard, tetapi terdapat juga varian selamat-URL yang menggantikan + dengan - dan / dengan _ untuk mengelakkan konflik dengan aksara terpelihara URL.

Bagaimana Algoritma Base64 Berfungsi

Memahami algoritma di sebalik Base64 membantu membongkar misteri transformasi yang kelihatan "ajaib" ini. Berikut ialah proses langkah demi langkah:

Langkah 1: Tukar Input kepada Binari

Setiap bait data input diwakili sebagai nombor binari 8-bit. Contohnya, teks ASCII Man diwakili sebagai:

  • M = 77 dalam perpuluhan = 01001101 dalam binari
  • a = 97 dalam perpuluhan = 01100001 dalam binari
  • n = 110 dalam perpuluhan = 01101110 dalam binari

Digabungkan, ini memberikan kita aliran 24-bit: 010011010110000101101110

Langkah 2: Bahagi kepada Kumpulan 6-Bit

Berbeza dengan sempadan bait 8-bit yang biasa, Base64 membahagikan aliran binari kepada kumpulan 6 bit. Mengapa 6 bit? Kerana 26 = 64, iaitu tepat bilangan aksara dalam abjad Base64. Aliran 24-bit kita menjadi empat kumpulan 6-bit:

  • 010011 = 19
  • 010110 = 22
  • 000101 = 5
  • 101110 = 46

Langkah 3: Peta ke Jadual Aksara Base64

Setiap nilai 6-bit (0-63) dipetakan kepada aksara tertentu dalam abjad Base64:

Julat NilaiAksara
0-25A-Z
26-51a-z
52-610-9
62+
63/

Mengaplikasikan ini kepada nilai kita: 19 = T, 22 = W, 5 = F, 46 = u. Jadi Man dikodkan sebagai TWFu.

Langkah 4: Pengendalian Padding

Apabila panjang input bukan gandaan 3 bait, aliran binari tidak terbahagi sama rata kepada kumpulan 6-bit. Dalam kes ini, bit sifar ditambah untuk melengkapkan kumpulan 6-bit terakhir, dan aksara padding = ditambah pada output untuk menunjukkan berapa banyak bait tambahan yang ditambah:

  • 1 bait input menghasilkan 2 aksara Base64 + padding ==
  • 2 bait input menghasilkan 3 aksara Base64 + padding =
  • 3 bait input menghasilkan 4 aksara Base64 tanpa padding

Contohnya, mengekod hanya Ma (2 bait) memberikan TWE=, dan mengekod hanya M (1 bait) memberikan TQ==.

Kes Penggunaan Biasa untuk Pengekodan Base64

Pengekodan Base64 muncul dalam banyak bidang pembangunan web moden dan kejuruteraan perisian. Berikut adalah yang paling penting:

1. Data URI dalam HTML dan CSS

Data URI membolehkan anda membenamkan fail terus dalam HTML atau CSS menggunakan pengekodan Base64. Berbanding membuat permintaan HTTP berasingan untuk imej kecil, anda boleh menyisipkannya secara inline:

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

Ini sangat berguna untuk ikon kecil dan imej hiasan di mana menghapuskan permintaan HTTP meningkatkan prestasi pemuatan halaman. Walau bagaimanapun, Base64 meningkatkan saiz data kira-kira 33%, jadi teknik ini paling sesuai untuk fail di bawah 2-3 KB. Anda boleh menggunakan penukar Imej ke Base64 kami untuk menjana data URI dengan cepat daripada sebarang fail imej.

2. Lampiran E-mel (MIME)

Penggunaan asal dan mungkin paling penting dari segi sejarah bagi Base64 ialah dalam e-mel. Protokol SMTP direka untuk menghantar teks ASCII 7-bit, bermakna fail binari seperti imej, PDF dan dokumen tidak boleh dihantar secara langsung. MIME (Multipurpose Internet Mail Extensions) menggunakan Base64 untuk mengekod lampiran ini supaya ia boleh dihantar dengan selamat melalui pelayan e-mel tanpa kerosakan.

3. Token Pengesahan API

HTTP Basic Authentication mengekod pasangan nama_pengguna:kata_laluan dalam Base64 dan menghantarnya dalam pengepala Authorization:

Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=

Penting untuk memahami bahawa ini menyediakan pengekodan, bukan penyulitan. Sesiapa yang memintas pengepala ini boleh menyahkodnya dengan mudah, itulah sebabnya Basic Authentication mesti sentiasa digunakan melalui HTTPS.

4. JSON Web Tokens (JWT)

JWT ialah salah satu penggunaan Base64 yang paling biasa dalam pembangunan web moden. JWT terdiri daripada tiga bahagian yang dikodkan dalam Base64URL dipisahkan oleh titik: pengepala, muatan dan tandatangan. Contohnya:

eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoiam9obiJ9.xyz123...

Pengepala dan muatan ialah objek JSON yang dikodkan dalam Base64URL yang boleh dinyahkod oleh sesiapa sahaja. Tandatangan menyediakan pengesahan integriti. Anda boleh memeriksa dan menyahkod JWT menggunakan alat penyahkod JWT kami atau menjana token ujian dengan penjana JWT.

5. Menyimpan Data Binari dalam JSON dan XML

JSON dan XML ialah format berasaskan teks yang tidak menyokong data binari secara asli. Apabila anda perlu menyertakan kandungan binari, seperti kunci kriptografi, imej kecil atau sijil, pengekodan Base64 ialah pendekatan standard. Banyak API mengembalikan data binari sebagai rentetan yang dikodkan Base64 dalam respons JSON.

6. Mengekod Data dalam URL

Sementara Base64 standard menggunakan aksara yang terpelihara dalam URL (+, /, =), varian selamat-URL (Base64URL) menggantikannya dengan -, _ dan secara pilihan menghapuskan padding. Ini digunakan secara meluas dalam token OAuth, URL bertandatangan dan parameter keadaan. Untuk keperluan pengekodan URL yang lain, lihat alat pengekod/penyahkod URL kami.

Base64 BUKAN Penyulitan

Ini adalah salah satu perkara paling kritikal untuk difahami, dan kesilapan yang kadang-kadang dilakukan oleh pembangun berpengalaman sekalipun: pengekodan Base64 bukan mekanisme keselamatan. Ia tidak menyediakan sebarang kerahsiaan.

Inilah sebabnya perbezaan ini penting:

  • Pengekodan menukarkan data daripada satu format ke format lain untuk keserasian. Ia boleh diterbalikkan sepenuhnya oleh sesiapa sahaja, tanpa kunci atau rahsia diperlukan.
  • Penyulitan menukarkan data untuk menghalang akses tanpa kebenaran. Ia memerlukan kunci untuk diterbalikkan dan direka supaya mustahil secara pengiraan untuk dipecahkan tanpa kunci tersebut.

Jika seseorang memberikan anda rentetan Base64, anda boleh menyahkodnya serta-merta. Tiada kunci, tiada kata laluan, tiada rahsia. Cubalah sendiri dengan pengekod/penyahkod Base64 kami: tampal sebarang rentetan Base64 dan anda akan melihat data asal dengan serta-merta.

Jangan sekali-kali menyimpan kata laluan, kunci API atau data sensitif menggunakan pengekodan Base64 sahaja. Jika anda memerlukan penyulitan sebenar, gunakan algoritma seperti AES-256. Anda boleh bereksperimen dengan alat penyulitan AES kami untuk melihat perbezaan antara pengekodan dan penyulitan. Untuk pencincangan kata laluan, pertimbangkan menggunakan algoritma khusus seperti bcrypt, scrypt atau Argon2.

Overhed Saiz: Memahami Peningkatan 33%

Pengekodan Base64 sentiasa meningkatkan saiz data. Sebabnya bersifat matematik: setiap 3 bait (24 bit) input menjadi 4 aksara (32 bit) output. Ini bermakna data yang dikodkan adalah kira-kira 33% lebih besar daripada asal.

Berikut ialah rujukan pantas untuk overhed saiz:

Saiz AsalSaiz Base64Overhed
1 KB~1.37 KB+37%
10 KB~13.3 KB+33%
100 KB~133 KB+33%
1 MB~1.33 MB+33%

Overhed ini penting untuk dipertimbangkan apabila membenamkan imej sebagai data URI. Imej 50 KB menjadi kira-kira 67 KB apabila dikodkan Base64, dan rentetan Base64 itu disisipkan terus dalam HTML atau CSS anda, menjadikan dokumen itu sendiri lebih besar dan berpotensi lebih perlahan untuk diurai.

Bila TIDAK Menggunakan Base64

Mengetahui bila untuk mengelakkan Base64 adalah sama pentingnya dengan mengetahui bila menggunakannya. Berikut ialah senario biasa di mana Base64 adalah pilihan yang salah:

  • Fail besar: Membenamkan imej 500 KB sebagai data URI Base64 meningkatkan saiz dokumen HTML sebanyak ~667 KB, memusnahkan kemungkinan caching dan memperlahankan rendering halaman. Sajikan fail besar sebagai sumber berasingan.
  • Keselamatan: Seperti yang dibincangkan di atas, jangan sekali-kali menggunakan Base64 sebagai langkah keselamatan. Ia boleh diterbalikkan dengan mudah.
  • Penyimpanan pangkalan data: Menyimpan data binari besar sebagai Base64 dalam lajur pangkalan data membazir 33% lebih banyak ruang penyimpanan. Gunakan lajur BLOB/BYTEA asli.
  • Data penstriman: Base64 memerlukan keseluruhan input tersedia sebelum pengekodan (disebabkan pengumpulan 3-bait). Untuk senario penstriman, pengekodan pemindahan bersegmen atau protokol binari adalah pilihan yang lebih baik.
  • Laluan kritikal prestasi: Pengekodan dan penyahkodan Base64 memerlukan kitaran CPU. Dalam sistem berkemampuan tinggi yang memproses berjuta-juta operasi sesaat, overhed boleh menjadi ketara.

Contoh Praktikal dengan Kod

Berikut ialah contoh pantas pengekodan dan penyahkodan Base64 dalam bahasa pengaturcaraan popular:

JavaScript (Pelayar dan Node.js)

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

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

// For Unicode strings, use TextEncoder
const encoder = new TextEncoder();
const bytes = encoder.encode("Hello");
const base64 = btoa(String.fromCharCode(...bytes));

Python

import base64

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

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

# URL-safe variant
url_safe = base64.urlsafe_b64encode(b"Hello, World!")

PHP

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

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

Sudah tentu, anda tidak perlu menulis kod setiap kali anda perlu mengekod atau menyahkod Base64. Alat Base64 dalam talian kami mengendalikannya serta-merta dalam pelayar anda tanpa perlu memasang sebarang perisian.

Penukaran Imej ke Base64: Kelebihan dan Kekurangan

Menukarkan imej kepada rentetan Base64 ialah salah satu penggunaan pengekodan ini yang paling diperdebatkan. Berikut ialah pandangan seimbang dari kedua-dua sisi:

Kelebihan

  • Kurang permintaan HTTP: Setiap imej yang dibenamkan sebagai data URI menghapuskan satu perjalanan rangkaian pergi-balik. Untuk halaman dengan banyak ikon kecil, ini boleh meningkatkan masa pemuatan secara ketara.
  • Dokumen serba lengkap: Fail HTML dengan imej Base64 adalah sepenuhnya berdiri sendiri. Ini berguna untuk templat e-mel, dokumen luar talian dan eksport fail tunggal.
  • Tiada isu CORS: Imej inline memintas sekatan asal silang sepenuhnya.
  • Penempatan dipermudahkan: Tidak perlu mengurus fail imej berasingan, laluan CDN atau saluran paip aset untuk grafik kecil.

Kekurangan

  • Peningkatan saiz 33%: Rentetan yang dikodkan sentiasa lebih besar daripada fail binari asal.
  • Tiada caching pelayar: Imej Base64 inline tidak boleh dicache secara bebas. Setiap pemuatan halaman memindahkan semula rentetan yang dikodkan sepenuhnya.
  • Menyekat rendering: Imej Base64 dalam CSS mesti dimuat turun dan diurai sebagai sebahagian daripada lembaran gaya sebelum halaman boleh dirender.
  • Kesukaran penyelenggaraan: Mengemas kini imej Base64 inline memerlukan menjana semula dan menggantikan keseluruhan rentetan yang dikodkan.

Peraturan umum: gunakan data URI Base64 untuk imej di bawah 2 KB (ikon kecil, SVG ringkas, piksel penjejakan 1x1). Untuk apa-apa yang lebih besar, sajikan imej sebagai fail berasingan dan biarkan pelayar mencachenya. Anda boleh bereksperimen dengan ini menggunakan alat penukaran Imej ke Base64 dan Base64 ke Imej kami.

Varian Base64 yang Perlu Anda Ketahui

Tidak semua pengekodan Base64 adalah sama. Berikut ialah varian utama:

  • Base64 Standard (RFC 4648): Menggunakan A-Za-z0-9+/ dengan padding =. Ini adalah varian yang paling biasa.
  • Base64URL (RFC 4648 Seksyen 5): Menggunakan A-Za-z0-9-_ menggantikan +/. Penting untuk URL, nama fail dan token. Digunakan dalam JWT.
  • MIME Base64 (RFC 2045): Abjad yang sama seperti standard tetapi menyisipkan pemecahan baris setiap 76 aksara. Digunakan dalam lampiran e-mel.
  • Base32: Menggunakan abjad 32 aksara. Kurang cekap ruang tetapi tidak sensitif huruf besar/kecil, berguna dalam konteks di mana sensitiviti huruf besar/kecil bermasalah (seperti kunci rahsia TOTP).

Ringkasan dan Perkara Utama

Pengekodan Base64 ialah alat asas dalam kit alat setiap pembangun. Berikut ialah perkara penting untuk diingati:

  • Base64 menukarkan data binari kepada teks menggunakan abjad 64 aksara, menghasilkan output yang 33% lebih besar daripada input.
  • Ia berfungsi dengan membahagikan data binari kepada kumpulan 6-bit dan memetakan setiap kumpulan kepada aksara yang boleh dicetak.
  • Penggunaan biasa termasuk data URI, lampiran e-mel, token JWT, pengesahan API dan membenamkan data binari dalam JSON/XML.
  • Base64 ialah pengekodan, bukan penyulitan. Jangan sekali-kali menggunakannya sebagai langkah keselamatan.
  • Gunakan Base64 untuk fail kecil dan pengangkutan data. Elakkan ia untuk fail besar, keselamatan dan laluan kritikal prestasi.
  • Varian selamat-URL (Base64URL) menggantikan aksara bermasalah untuk penggunaan dalam URL dan token.
Petua: Tandakan buku pengekod/penyahkod Base64 kami untuk tugas pengekodan dan penyahkodan pantas. Ia berjalan sepenuhnya dalam pelayar anda, jadi data anda tidak pernah meninggalkan peranti anda.
Peringatan Keselamatan: Jika anda perlu melindungi data sensitif, gunakan alat penyulitan yang sesuai seperti alat penyulitan AES kami, bukan pengekodan Base64. Untuk penjanaan kata laluan yang selamat, cuba penjana kata laluan.
Cuba Pengekod Base64 Percuma Kami

Enkod dan dekod teks atau fail ke Base64 serta-merta dalam pelayar anda. Tiada data dihantar ke mana-mana pelayan.