Enkode Teks dan File ke Base64

Ubah teks, byte mentah, atau file apa pun menjadi Base64. Pilih set karakter yang diharapkan penerima, pertahankan atau hilangkan padding =, dan bungkus baris pada 76 atau 64 karakter untuk MIME dan PEM.

Berjalan sepenuhnya di browser Anda. Tidak ada yang diunggah.

Cara menggunakan

  1. Ketik atau tempel teks yang ingin dienkode, atur Masukan sebagai ke Hex untuk mengenkode byte mentah, atau klik Buka file untuk mengenkode file.
  2. Biarkan Pengodean teks pada UTF-8 kecuali sistem penerima mengharapkan set karakter lain.
  3. Atur opsinya: gunakan varian Standar untuk sebagian besar keperluan, matikan Padding jika penerima tidak memerlukannya, dan atur Bungkus baris ke 76 (MIME) atau 64 (PEM) karakter bila diperlukan.
  4. Salin keluaran Base64 atau unduh sebagai file.

Cara kerja pengodean Base64

Encoder membaca masukan tiga byte sekaligus. Ke-24 bit tersebut dibagi menjadi empat kelompok 6 bit, dan setiap nilai 6 bit (0 hingga 63) memilih satu karakter: A-Z untuk 0 hingga 25, a-z untuk 26 hingga 51, 0-9 untuk 52 hingga 61, lalu + dan /. Tiga byte masuk, empat karakter keluar; itulah sebabnya Base64 sekitar 33% lebih besar daripada data aslinya.

Teks     M        a        n
Byte     77       97       110
Bit      01001101 01100001 01101110
6 bit    010011 010110 000101 101110
Indeks   19     22     5      46
Base64   T      W      F      u

Padding dan panjang keluaran

Jika panjang masukan bukan kelipatan tiga, kelompok terakhir tidak lengkap. Satu byte sisa menjadi dua karakter yang diikuti ==; dua byte sisa menjadi tiga karakter dan satu =. Karena itu, keluaran dengan padding selalu sepanjang 4 × ceil(n / 3) karakter untuk n byte masukan.

Padding tidak membawa data apa pun. JSON Web Token, parameter URL, dan banyak API tidak menyertakannya, jadi matikan padding jika pihak penerima mengharapkan keluaran tanpa padding. Untuk tautan dan nama file, pilih varian aman untuk URL atau gunakan halaman Base64URL; keduanya mengganti + dan / dengan - dan _.

Bungkus baris untuk MIME dan PEM

Secara default, keluaran berupa satu baris panjang, sesuai kebutuhan JSON, data URI, dan header HTTP. Ada dua format yang mengharapkan jeda baris:

  • MIME, 76 karakter. Lampiran email yang dikirim dengan Content-Transfer-Encoding: base64 tidak boleh memiliki baris yang lebih panjang dari 76 karakter (RFC 2045). Opsi ini mengakhiri baris dengan CRLF, sesuai ketentuan MIME.
  • PEM, 64 karakter. Sertifikat dan kunci di antara baris -----BEGIN dan -----END menggunakan baris sepanjang 64 karakter (RFC 7468). Opsi ini menggunakan akhir baris LF.

Set karakter dan file

Base64 mengenkode byte, bukan huruf, sehingga teks terlebih dahulu diubah menjadi byte dengan sebuah set karakter. Huruf é berukuran dua byte dalam UTF-8, tetapi hanya satu byte dalam ISO-8859-1 atau Windows-1252, sehingga teks yang sama menghasilkan Base64 yang berbeda. UTF-8 adalah pilihan yang tepat untuk web, JSON, dan hampir semua API modern; pilih GBK, Shift_JIS, Windows-1251, atau set karakter lain hanya untuk menyesuaikan dengan sistem lama.

File dienkode persis seperti yang tersimpan, tanpa konversi set karakter. Untuk gambar dengan cuplikan HTML dan CSS siap pakai, lihat Gambar ke Base64; untuk data URI dengan tipe MIME yang terdeteksi otomatis, gunakan File ke Base64.

Spesifikasi

AlfabetA-Z a-z 0-9 + /
Ukuran keluaran4 karakter per 3 byte (sekitar 133%)
PaddingDiisi = hingga kelipatan 4 karakter
StandarRFC 4648 bagian 4
Peka huruf besar-kecilYa

Contoh

Masukan (UTF-8)Keluaran
Hello, World!SGVsbG8sIFdvcmxkIQ==
Base64.isQmFzZTY0Lmlz
你好5L2g5aW9

Pertanyaan yang sering diajukan

Mengapa keluaran Base64 saya berbeda dari encoder lain?
Hampir selalu karena byte masukannya berbeda. Penyebab umumnya adalah baris baru di akhir (perintah shell echo menambahkannya; gunakan printf '%s' atau echo -n), set karakter yang berbeda, akhir baris Windows di dalam teks, atau pengaturan padding, alfabet, atau bungkus baris yang berbeda. Byte yang sama dengan opsi yang sama selalu menghasilkan keluaran yang sama.
Bagaimana cara mengenkode teks Unicode ke Base64 di JavaScript?
btoa() hanya menerima karakter hingga U+00FF dan memunculkan error untuk karakter lainnya. Ubah dulu string menjadi byte UTF-8, misalnya btoa(String.fromCharCode(...new TextEncoder().encode(str))). Di Node.js, gunakan Buffer.from(str, 'utf8').toString('base64').
Bagaimana cara mengenkode Base64 di baris perintah?
Jalankan printf '%s' 'your text' | base64 di Linux atau macOS. GNU base64 secara default membungkus keluaran pada 76 karakter (tambahkan -w 0 untuk satu baris), sedangkan openssl base64 membungkusnya pada 64 karakter (tambahkan -A).
Apakah pengodean Base64 termasuk enkripsi?
Tidak. Base64 tidak memiliki kunci dan siapa pun dapat membaliknya dengan decoder Base64. Base64 dibuat untuk memindahkan data biner melalui saluran yang hanya menerima teks, bukan untuk menyembunyikan informasi.
Seberapa besar Base64 memperbesar data saya?

Setiap 3 byte menjadi 4 karakter, dibulatkan ke atas menjadi satu kelompok penuh, sehingga keluarannya sekitar 33% lebih besar. Bungkus baris MIME menambahkan dua byte lagi (CRLF) setiap 76 karakter.