Cara menggunakan
- Ketik atau tempel teks yang ingin dienkode, atur Masukan sebagai ke Hex untuk mengenkode byte mentah, atau klik Buka file untuk mengenkode file.
- Biarkan Pengodean teks pada UTF-8 kecuali sistem penerima mengharapkan set karakter lain.
- 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.
- 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: base64tidak 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
-----BEGINdan-----ENDmenggunakan 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
| Alfabet | A-Z a-z 0-9 + / |
|---|---|
| Ukuran keluaran | 4 karakter per 3 byte (sekitar 133%) |
| Padding | Diisi = hingga kelipatan 4 karakter |
| Standar | RFC 4648 bagian 4 |
| Peka huruf besar-kecil | Ya |
Contoh
| Masukan (UTF-8) | Keluaran |
|---|---|
Hello, World! | SGVsbG8sIFdvcmxkIQ== |
Base64.is | QmFzZTY0Lmlz |
你好 | 5L2g5aW9 |
Pertanyaan yang sering diajukan
Mengapa keluaran Base64 saya berbeda dari encoder lain?
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?
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?
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.