logo
GeekFormat

Penyandian Base64

Teks Input
0 karakter

Alat encode dan decode Base64 online gratis. Mendukung set karakter UTF-8/ASCII/ISO-8859-1 dengan tiga varian: Standard, URL-Safe, dan MIME. Menampilkan rasio pembengkakan data secara real-time, pemutusan baris MIME sesuai standar RFC 2045.

Rekomendasi Terkait

Kasus penggunaan

  • Debugging JWT: dekode segmen header dan payload JWT (format Base64URL) untuk melihat konten klaim token
  • Basic Auth: sandikan nama_pengguna:kata_sandi sebagai kredensial autentikasi HTTP Basic
  • Pengembangan OAuth: hasilkan code_verifier atau verifikasi code_challenge dalam skenario PKCE
  • Debugging API: sandikan data JSON atau dekode bidang Base64 yang dikembalikan oleh API
  • Penyematan gambar Data URI: ubah ikon kecil menjadi format data:image/...;base64,... untuk disematkan dalam CSS/HTML
  • Penyandian lampiran email: sandikan lampiran email biner dalam format MIME Base64

Fitur

  • Peralihan Encode/Decode satu klik: bebas beralih antara mode penyandian dan dekode, output langsung menjadi input untuk mendukung pemrosesan siklik
  • Dukungan tiga set karakter: UTF-8 (Mandarin/Jepang/emoji), ASCII, ISO-8859-1, cakupan profesional untuk berbagai skenario
  • Tiga varian untuk output: Standard (standar), URL-Safe (aman untuk JWT/OAuth/PKCE), MIME (standar RFC 2045 dengan pemutusan baris 76 karakter)
  • Statistik volume real-time: menampilkan jumlah karakter input/output dan rasio pembengkakan secara real-time (Base64 meningkatkan volume sekitar 33%)
  • Pesan kesalahan yang jelas: ketika karakter di luar jangkauan, menampilkan pesan kesalahan spesifik alih-alih kesalahan sederhana
  • Pemisah yang dapat diseret: di PC dapat menyesuaikan rasio area edit kiri dan kanan untuk fokus pada tugas saat ini
  • Tab independen untuk seluler: pengguna ponsel/tablet beralih secara independen antara area input dan output untuk pengalaman yang lancar

Cara Penggunaan

  1. Pilih mode: klik Encode (sandi) atau Decode (dekode) untuk mengubah arah pemrosesan
  2. Pilih varian: Standard (standar), URL-Safe (JWT/OAuth), MIME (format email dengan pemutusan baris 76 karakter)
  3. Masukkan konten: tempel teks atau string Base64, itu akan secara otomatis diproses secara real-time
  4. Lihat statistik: di bagian bawah ditampilkan jumlah karakter dan rasio pembengkakan volume (penyandian meningkatkan volume sekitar 33%)
  5. Salin hasil: salin string Base64 atau teks terdekode dengan satu klik

Pertanyaan Umum

Apakah penyandian Base64 sama dengan enkripsi?

Tidak. Base64 hanya mengubah teks menjadi bentuk representasi lain yang dapat dibalik; siapa pun dapat mendekodenya kembali ke teks asli. Jika menyangkut data sensitif (kata sandi, token), gunakan skema enkripsi yang sebenarnya seperti AES. Base64 hanya cocok untuk transformasi format data, memudahkan pengiriman data biner melalui sistem teks.

Alat enkripsi AES

Seberapa besar data bertambah setelah penyandian Base64?

Penyandian Base64 meningkatkan volume data asli sekitar 33%. Hal ini karena setiap 3 byte (24 bit) disandikan menjadi 4 karakter Base64. Misalnya, teks 100 byte setelah penyandian akan menjadi sekitar 133 byte. Rasio pembengkakan ditampilkan secara real-time di bagian bawah alat agar Anda dapat memperkirakan ukuran data. Contoh: `Hello` → `SGVsbG8=` (volume +33%).

Alat statistik Base64

Apa perbedaan antara tiga varian: Standard, URL-Safe, dan MIME?

Standard adalah Base64 standar yang menggunakan karakter A-Z, a-z, 0-9, +, /. URL-Safe mengganti +/ menjadi -_, membuatnya cocok untuk parameter URL dan token JWT. MIME menyisipkan pemutusan baris setiap 76 karakter, sesuai standar email RFC 2045, cocok untuk lampiran email dan teks multibaris.

URL-Safe Base64MIME Base64

Bagaimana cara mendekode header atau payload JWT?

JWT menggunakan penyandian Base64URL (varian URL-Safe). Setelah memilih mode URL-Safe, cukup tempel segmen pertama (header) atau segmen kedua (payload) JWT untuk mendekode. Catatan: segmen ketiga JWT adalah tanda tangan dan tidak boleh didekode atau diverifikasi di sini.

Alat JWT

Apa itu Padding (pengisian) dalam Base64?

Panjang hasil penyandian Base64 harus kelipatan 4. Ketika panjang input bukan kelipatan 3, bagian akhir diisi dengan karakter =. Varian URL-Safe tidak menggunakan padding. Alat secara otomatis menangani padding dan juga secara otomatis menghapus karakter = saat mendekode.

Alat Padding Base64

Mengapa btoa dan atob di JavaScript tidak mendukung bahasa Mandarin?

btoa dan atob adalah API asli browser yang bekerja dengan set karakter Latin-1 (ISO-8859-1), di mana setiap karakter menempati 1 byte. Karakter Mandarin menempati 3 byte dalam UTF-8, sehingga input langsung akan menyebabkan kesalahan. Solusinya adalah pertama-tama menggunakan encodeURIComponent untuk mengonversi bahasa Mandarin menjadi pola urutan byte %xx UTF-8, kemudian menggunakan unescape untuk mengonversi menjadi string Latin-1, dan terakhir menggunakan btoa untuk menyandikan.

Apa itu Data URI Scheme? Bagaimana cara menyematkan gambar dengan Base64?

Data URI adalah format URI yang memungkinkan menyematkan file kecil langsung ke dalam URL, sintaksis: `data:[<mediatype>][;base64],<data>`. Misalnya: `data:image/png;base64,iVBORw0KGgo...`. Sering digunakan untuk menyematkan ikon kecil, gambar latar belakang CSS, dll. untuk mengurangi jumlah permintaan HTTP. Namun Base64 meningkatkan volume sebesar 33%, jadi hanya cocok untuk file kecil; file besar harus menggunakan URL biasa.

Alat Data URIBase64 ke gambar

Apa itu penyandian Base64?

Base64 adalah skema penyandian data biner ke teks berdasarkan 64 karakter ASCII yang dapat dicetak, pertama kali didefinisikan oleh RFC 2045 (standar MIME). Base64 mengubah setiap 3 byte (24 bit) menjadi 4 karakter Base64 (A-Z, a-z, 0-9, +, /), memungkinkan data biner dikirim dengan aman melalui sistem yang hanya mendukung teks seperti header HTTP, payload JSON, dokumen XML, atau parameter kueri URL.

**Base64 bukan enkripsi**, ia hanya menyediakan transformasi format data, siapa pun dapat dengan mudah mendekodenya. Jika Anda perlu melindungi data sensitif, gunakan skema enkripsi yang sebenarnya seperti AES. Aplikasi umum Base64 meliputi: HTTP Basic Authentication (`Authorization: Basic dXNlcjpwYXNz`), segmen header dan payload token JWT (format Base64URL), Data URI (`data:image/png;base64,...`), penyandian MIME lampiran email, dll.

**URL-Safe Base64** (RFC 4648 §5) mengganti +/ dari Base64 standar menjadi -_ dan biasanya menghilangkan padding =. Ini memungkinkan hasil penyandian muncul dengan aman di URL, jalur file, atau bidang JSON. Token JWT, code_verifier OAuth PKCE, dan AWS Signature V4 semuanya menggunakan penyandian URL-Safe Base64.

**Pemutusan baris MIME** adalah standar RFC 2045 yang menetapkan bahwa setiap baris tidak boleh melebihi 76 karakter. Ketika konten Base64 digunakan dalam email atau skenario tertentu yang memerlukan pemutusan baris untuk tampilan, varian MIME akan secara otomatis menyisipkan karakter pemutusan baris (`\n`) setiap 76 karakter. Ini adalah format standar untuk transmisi lampiran email.

Alat menggunakan **API btoa/atob asli** browser yang dikombinasikan dengan logika pemrosesan UTF-8 yang aman, memastikan karakter multibyte seperti Mandarin, Jepang, dan emoji disandikan dengan benar. Semua perhitungan dilakukan secara lokal, data tidak dikirim ke server mana pun. Buka panel jaringan di alat pengembang browser untuk memverifikasi tidak ada permintaan eksternal selama seluruh proses.

术语表

RFC 4648
Standar resmi untuk penyandian Base16/Base32/Base64 yang diterbitkan oleh IETF. Mendefinisikan dua alfabet: Base64 standar dan URL-Safe Base64, serta aturan untuk padding, pemutusan baris, penanganan karakter non-alfabet, dll. Merupakan standar de facto yang berlaku untuk penyandian Base64, menggantikan RFC 3548 sebelumnya.Alat URL-Safe Base64Alat Padding Base64
RFC 2045 (MIME)
Standar Ekstensi Surat Internet Multiguna (MIME). Pertama kali menerapkan Base64 sebagai metode penyandian untuk transmisi konten surat. Menetapkan bahwa penyandian Base64 tidak boleh melebihi 76 karakter per baris dan dipisahkan oleh CRLF, dikenal sebagai varian MIME Base64.Alat MIME Base64
Base64URL (URL-Safe Base64)
Varian aman URL yang didefinisikan dalam RFC 4648 §5. Mengganti + dari Base64 standar menjadi - dan / menjadi _, dan biasanya menghilangkan karakter padding =. Digunakan secara luas dalam skenario seperti token JWT, OAuth PKCE, parameter URL, dan nama file.Alat URL-Safe Base64Alat JWT
MIME Base64
Varian Base64 yang sesuai dengan standar RFC 2045, menyisipkan karakter pemutusan baris (CRLF) setiap 76 karakter. Terutama digunakan untuk transmisi lampiran email, karena protokol SMTP awal memiliki batasan pada panjang satu baris.Alat MIME Base64
Padding (pengisian)
Panjang hasil penyandian Base64 harus kelipatan 4. Ketika jumlah byte input bukan kelipatan 3, bagian akhir diisi dengan karakter =. Base64 standar menggunakan padding, Base64URL biasanya menghilangkannya.Alat Padding Base64
Alfabet Base64
Kumpulan 64 karakter yang digunakan dalam penyandian Base64. Alfabet Base64 standar: A-Z (26), a-z (26), 0-9 (10), +, /, total 64 karakter, ditambah karakter pengisian =.
btoa / atob
API asli browser untuk penyandian/dekode Base64. btoa (binary to ASCII) digunakan untuk menyandikan, atob (ASCII to binary) untuk mendekode. Catatan: API ini hanya mendukung set karakter Latin-1. Untuk pemrosesan bahasa Mandarin, mereka harus dikombinasikan dengan rekode UTF-8.
Data URI Scheme
Format URI yang memungkinkan menyematkan file kecil langsung ke dalam URL, format: data:[<mediatype>][;base64],<data>. Sering digunakan untuk menyematkan ikon kecil dan gambar latar belakang CSS untuk mengurangi permintaan HTTP.Alat Data URIBase64 ke gambar
HTTP Basic Authentication
Metode autentikasi dalam protokol HTTP. Nama pengguna dan kata sandi digabungkan dengan titik dua, disandikan dalam Base64, dan dikirim dalam header Authorization permintaan. Format: Authorization: Basic <base64(nama_pengguna:kata_sandi)>.Pembuat header Auth
Rasio pembengkakan Base64
Proporsi di mana volume data meningkat setelah penyandian Base64. Setiap 3 byte (24 bit) disandikan menjadi 4 karakter Base64, sehingga volume meningkat sekitar 33% (4/3 ≈ 1,333). Dengan padding, rasio pembengkakan sedikit lebih tinggi.

Perbandingan tiga varian Base64

FiturStandardURL-SafeMIME
Karakter khusus+ /- _+ /
Padding(=)DigunakanBiasanya dihilangkanDigunakan
Pemutusan barisTidak adaTidak adaBaris setiap 76 karakter
StandarRFC 4648 §4RFC 4648 §5RFC 2045
Skenario umumData URI, penyandian umumJWT, parameter URL, nama fileLampiran email, transmisi SMTP

Tabel perbandingan penyandian seri Base

PenyandianJumlah karakterFitur set karakterPembengkakan dataPenggunaan umum
Base16 (Hex)160-9, A-F100%Debugging, tampilan hash
Base3232A-Z, 2-7(huruf kapital tanpa kebingungan)60%DNS, kunci TOTP, kode QR
Base5858Mengecualikan karakter yang mudah tertukar 0/O/I/l38%Alamat Bitcoin, kriptokurensi
Base6262A-Z, a-z, 0-934%Pemendek URL, penyandian ID
Base6464A-Z, a-z, 0-9, +, /33%Data URI, MIME, JWT(varian URL-Safe)

Code Examples

Penyandian Base64 dalam JavaScript (mendukung UTF-8 Mandarin)

// 编码(支持 UTF-8 中文)
function b64Encode(str) {
  return btoa(unescape(encodeURIComponent(str)));
}

// 解码(支持 UTF-8 中文)
function b64Decode(str) {
  return decodeURIComponent(escape(atob(str)));
}

// URL-Safe 编码(用于 JWT / OAuth)
function b64UrlEncode(str) {
  return btoa(unescape(encodeURIComponent(str)))
    .replace(/\+/g, '-')
    .replace(/\//g, '_')
    .replace(/=+$/, '');
}

console.log(b64Encode('Hello 世界')); // SGVsbG8g5LiW55WM
console.log(b64Decode('SGVsbG8g5LiW55WM')); // Hello 世界

Penyandian Base64 dalam Python

import base64

# Standard 编码(UTF-8)
encoded = base64.b64encode('Hello 世界'.encode('utf-8'))
print(encoded.decode())  # SGVsbG8g5LiW55WM

# Standard 解码
decoded = base64.b64decode(encoded).decode('utf-8')
print(decoded)  # Hello 世界

# URL-Safe 编码(用于 JWT / OAuth)
url_safe = base64.urlsafe_b64encode('Hello 世界'.encode('utf-8'))
print(url_safe.decode())  # SGVsbG8g5LiW55WM(无 padding 需手动去除)

# 去除 padding(JWT 标准做法)
url_safe_no_pad = url_safe.decode().rstrip('=')
print(url_safe_no_pad)

Penyandian Base64 dalam Java

import java.nio.charset.StandardCharsets;
import java.util.Base64;

public class Base64Example {
    public static void main(String[] args) {
        String text = "Hello 世界";

        // Standard 编码
        String encoded = Base64.getEncoder()
            .encodeToString(text.getBytes(StandardCharsets.UTF_8));
        System.out.println(encoded); // SGVsbG8g5LiW55WM

        // Standard 解码
        String decoded = new String(
            Base64.getDecoder().decode(encoded), StandardCharsets.UTF_8);
        System.out.println(decoded); // Hello 世界

        // URL-Safe 编码(用于 JWT / URL)
        String urlSafe = Base64.getUrlEncoder().withoutPadding()
            .encodeToString(text.getBytes(StandardCharsets.UTF_8));
        System.out.println(urlSafe);

        // MIME 编码(76字符换行)
        String mime = Base64.getMimeEncoder()
            .encodeToString(text.getBytes(StandardCharsets.UTF_8));
    }
}

Authoritative References