Enkode dan dekode Base64
**URL:** `/base64-encode-decode/` **Schema:** `WebApplication` + `FAQPage` + `BreadcrumbList`
Semua perhitungan dijalankan di browser. Tidak ada yang Anda masukkan yang dikirim ke server.
Hasil diperbarui saat mengetik. Ctrl/Cmd+Enter menyalin hasil utama.
Hasil
—
Tampilan bit
Tampilkan langkah
Enkode dan Dekode Base64 mengonversi byte arbitrer menjadi string ASCII menggunakan alfabet RFC 4648, dan mengembalikan string tersebut ke byte asli. Mode teks menerima pengkodean karakter seperti UTF-8; mode file membaca unggahan melalui FileReader browser dan dapat mengeluarkan URI data: untuk disematkan. Pengkodean bukanlah enkripsi. Siapapun yang menerima string dapat memecahkan kodenya.
Semua pengkodean dan decoding berjalan di browser Anda. Tidak ada yang Anda tempel yang dikirim ke server.
Enkode teks atau file ke Base64
Pengkodean mengambil byte mentah dan menulis string A hingga Z, a hingga z, 0 hingga 9, plus, garis miring, dan padding =. Tempel teks atau pilih file, pilih pengkodean karakter jika sumbernya berupa teks, dan baca hasilnya.
Mode file sesuai dengan gambar dan dokumen kecil yang harus dimasukkan ke dalam JSON, XML, atau email tanpa saluran biner.
Outputnya aman untuk diangkut melalui sistem yang merusak biner sewenang-wenang, seperti gateway email lama atau salin-tempel ke XML. Ini lebih panjang dari input berdasarkan desain. Input kosong yang tidak valid tidak menghasilkan string; alat menunggu byte sebelum mengeluarkan karakter.
Dekode string Base64 kembali ke data
Decoding membalikkan pencarian alfabet, membangun kembali aliran bit asli dan mengembalikan teks atau file yang dapat diunduh. Menambahkan karakter = di bagian akhir sangatlah penting: karakter tersebut menandai berapa banyak byte yang ada di grup akhir yang tidak lengkap. Karakter di luar alfabet menyebabkan kesalahan yang jelas, bukan dekode parsial yang diam.
Spasi sering kali diabaikan sehingga string yang disalin dari sertifikat PEM atau badan MIME masih berfungsi. String yang terlihat seperti Base64 tetapi menggunakan alfabet aman URL memerlukan mode dekode aman URL, atau tanda hubung dan garis bawah akan ditolak karena ilegal dalam alfabet standar.
Pahami cara kerja pengkodean Base64
Base64 memproses input dalam blok tiga byte (24 bit). 24 bit tersebut dibagi menjadi empat kelompok yang terdiri dari 6 bit. Setiap nilai 6-bit adalah indeks dari 0 hingga 63 ke dalam alfabet 64 karakter. Oleh karena itu, tiga byte masukan menjadi empat karakter keluaran.
Bytes: [ byte1 ][ byte2 ][ byte3 ]
Bits: aaaaaaaa bbbbbbbb cccccccc
Groups: aaaaaa aabbbb bbbbcc cccccc
Chars: Char1 Char2 Char3 Char4
Ketika tersisa kurang dari tiga byte, encoder masih mengeluarkan empat karakter tetapi menambahkan padding sehingga decoder mengetahui panjang aslinya. Pengelompokan ulang bit adalah keseluruhan algoritma; tidak ada checksum dan tidak ada kunci.
Encode kata Anjing langkah demi langkah
Kata Dog berukuran tiga byte ASCII, sehingga mengisi satu grup Base64 dan dikodekan tanpa karakter padding. Output perlengkapannya adalah RG9n. Berjalan dari byte ke bit, mengelompokkan kembali menjadi indeks 6-bit, dan membaca alfabet RFC 4648 menunjukkan mengapa keempat karakter tersebut muncul dan bagaimana blok tiga byte mengikuti jalur yang sama.
1. Tulis byte-nya. D = 0x44 = 01000100 o = 0x6F = 01101111 g = 0x67 = 01100111
2. Gabungkan 24 bit. 01000100 01101111 01100111
3. Bagi menjadi kelompok 6-bit. 010001 000110 111101 100111
4. Ubah setiap grup menjadi indeks desimal. 17, 6, 61, 39
5. Cari alfabet. Indeks 17 = R, 6 = G, 61 = 9, 39 = n
Hasil: RG9n. Decoding RG9n mengembalikan tiga byte asli dan teks Dog di bawah UTF-8 atau ASCII.
Pahami padding dengan tanda sama dengan
Padding muncul ketika jumlah byte bukan kelipatan tiga. Satu byte sisa menghasilkan dua karakter alfabet dan dua tanda =. Dua byte sisa menghasilkan tiga karakter dan satu =. Perlengkapan Do → RG8= dan Dogs → RG9ncw== menampilkan kedua kasus sisa di samping kata tiga byte yang tidak diisi Dog.
| Input | Bytes | Encoded | Padding |
|---|---|---|---|
| Dog | 3 | RG9n | none |
| Do | 2 | RG8= | one = |
| Dogs | 4 | RG9ncw== | two = |
Do adalah dua byte: 01000100 01101111. Setelah pengelompokan 6-bit, hanya ada cukup bit untuk tiga karakter bermakna (RG8), dan satu padding = mengisi slot keempat. Dogs terdiri dari empat byte: grup tiga byte penuh dikodekan sebagai RG9n, lalu sisa satu byte dikodekan sebagai cw==. Menghapus padding dengan tangan tanpa menyesuaikan panjang bit akan merusak decoding; biarkan karakter = di tempatnya saat menempelkan.
Membaca alfabet Base64
RFC 4648 mendefinisikan 64 karakter ditambah tanda padding =. Indeks 0 hingga 25 adalah A hingga Z, 26 hingga 51 adalah a hingga z, 52 hingga 61 adalah 0 hingga 9, indeks 62 adalah +, dan indeks 63 adalah /.
Indeks 0 adalah A, bukan 0, yang membuat siapa pun yang mengharapkan angka memimpin alfabet akan tersandung.
| Index range | Karakter |
|---|---|
| 0 to 25 | A to Z |
| 26 to 51 | a to z |
| 52 to 61 | 0 to 9 |
| 62 | + |
| 63 | / |
| padding | = |
Panel alfabet kalkulator mencantumkan tabel yang sama dengan yang digunakan pembuat enkode, sehingga karakter yang mencurigakan dapat diperiksa berdasarkan kumpulan standar. String lengkapnya adalah ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/.
Gunakan varian Base64 yang aman untuk URL
Alfabet aman URL (base64url) menggantikan + dengan - dan / dengan _. Padding mungkin dihilangkan di beberapa protokol. Token Web JSON menggunakan varian ini sehingga segmen token dapat ditempatkan di URL dan header HTTP tanpa mengkodekan persen karakter plus dan garis miring.
String standar dan string aman-URL tidak dapat dipertukarkan. Decoding payload JWT dengan alfabet standar gagal pada tanda hubung. Alat ini menawarkan mode aman URL eksplisit untuk penyandian dan dekode. Pengkodean persen URL adalah masalah yang berbeda; gunakan halaman Enkode dan Dekode URL jika tujuannya adalah pelolosan RFC 3986, bukan Base64.
Perhitungkan peningkatan ukuran
Setiap tiga byte menjadi empat karakter, sehingga panjang yang dikodekan adalah sekitar 4/3 dari input, peningkatan 33 persen sebelum jeda baris. Padding dapat menambahkan satu atau dua karakter tambahan pada grup terakhir. URI data dan lampiran email merasakan biaya ini dengan cepat: gambar berukuran 300 KB menjadi sekitar 400 KB teks.
encoded_length ≈ 4 × ceil(byte_length / 3)
Pembungkusan baris sebanyak 76 karakter, umum di MIME, menambahkan byte baris baru di atasnya. Lebih memilih lampiran biner atau format terkompresi ketika ukuran penting; gunakan Base64 ketika saluran benar-benar tidak dapat membawa byte mentah.
Pilih pengkodean karakter
Base64 mengkodekan byte, bukan karakter abstrak. Huruf yang sama menghasilkan byte berbeda pada UTF-8, UTF-16, Shift JIS atau Big5. Decoding kemudian menafsirkan dengan charset yang salah menghasilkan mojibake bahkan ketika lapisan Base64 sempurna, sehingga charset mode teks harus cocok dengan produsen pada encode dan konsumen pada decode.
| Charset | Typical use |
|---|---|
| UTF-8 | Default for modern text and APIs |
| Windows-1252 | Legacy Western European text |
| UTF-16 LE / BE | Some Windows and Java payloads |
| Shift JIS | Older Japanese text |
| Big5 | Older Traditional Chinese text |
Untuk kata Dog, ASCII dan UTF-8 menghasilkan tiga byte yang sama, jadi RG9n identik. Teks non-ASCII berbeda. Pilih rangkaian karakter yang cocok dengan produser sebelum pengkodean, dan rangkaian karakter yang sama setelah decoding, atau perjalanan bolak-balik akan terlihat seperti bug Base64 ketika kesalahan terjadi di bagian hulu.
Pertanyaan yang sering diajukan
Apakah enkripsi Base64?
Tidak. Base64 adalah pengkodean yang dapat dibalikkan oleh siapa saja dengan alfabet publik. Itu tidak menyembunyikan apa pun. Gunakan algoritma kriptografi nyata ketika kerahasiaan diperlukan; gunakan Base64 ketika saluran membutuhkan byte aman ASCII.
Mengapa keluaran Base64 diakhiri dengan tanda sama dengan?
Karakter = adalah padding. Mereka menandai bahwa grup masukan terakhir memiliki satu atau dua byte, bukan tiga. Do dikodekan ke RG8= dan Dogs ke RG9ncw==. Simpan padding saat mendekode kecuali protokol mendokumentasikan bahwa padding tersebut telah dihapus.
Untuk apa Dog mengkodekannya?
Dog dikodekan ke RG9n tanpa padding, karena tiga byte mengisi satu grup Base64 dengan tepat. Pengelompokan ulang bit selangkah demi selangkah ditunjukkan pada contoh yang dikerjakan di halaman ini.
Apa perbedaan antara Base64 standar dan aman-URL?
Base64 yang aman untuk URL menggunakan - dan _, bukan + dan /. JWT dan beberapa penyematan nama file menggunakan alfabet yang aman untuk URL. Penguraian kode dengan alfabet yang salah gagal pada karakter yang diganti tersebut.
Seberapa besar Base64 dari aslinya?
Sekitar sepertiga lebih besar. Tiga byte menjadi empat karakter, jadi rasionya adalah 4/3 sebelum padding dan jeda baris. Payload 3.000 byte menjadi 4.000 karakter Base64.
Bisakah Base64 menyandikan file, bukan hanya teks?
Ya. Mode file membaca unggahan di browser dan mengkodekan byte mentahnya. Jalur sebaliknya diterjemahkan ke blob yang dapat diunduh. File besar meningkatkan penggunaan memori di tab; jaga agar unggahan tetap sederhana.
Mengapa teks yang didekodekan terlihat salah setelah dekode yang benar?
Lapisan Base64 memulihkan byte, namun pengkodean karakter yang digunakan untuk menafsirkan byte tersebut tidak cocok dengan produsen. Coba UTF-8 terlebih dahulu, baru rangkaian karakter yang benar-benar digunakan oleh sistem sumber.
Apakah alat ini mengunggah rahasia yang ditempel?
Tidak. Encoding dan decoding dijalankan secara lokal. Kunci API, token, dan fragmen sertifikat yang ditempelkan ke dalam kotak tidak dikirim ke server. Janji itu sesuai dengan aturan desain untuk semua halaman pengkodean di Kalkulator Cepat.
Apakah Base64 sama dengan pengkodean URL?
Tidak. Base64 memetakan biner ke alfabet 64 karakter untuk transportasi. Pengkodean URL (pengkodean persen) lolos dari karakter yang dicadangkan di dalam URI per RFC 3986. Karakter tersebut memecahkan masalah yang berbeda dan bukan merupakan pengganti satu sama lain.
RFC apa yang mendefinisikan alfabet?
RFC 4648 mendefinisikan alfabet Base64 standar dan aman untuk URL serta aturan padding yang digunakan di sini. Dokumen lama seperti RFC 2045 menjelaskan Base64 dalam konteks MIME dengan mekanisme serupa.
Ringkasan
Encode dan Decode Base64 memetakan byte ke alfabet RFC 4648 dalam grup 6-bit dan membalikkan proses secara lokal di browser. Dog menjadi RG9n, Do menjadi RG8=, dan Dogs menjadi RG9ncw==, yang menggambarkan padding untuk sisa satu dan dua byte.
Alfabet aman-URL menukar +// dengan -/_, output bertambah sekitar sepertiga, dan pilihan rangkaian karakter menentukan byte mana yang dimasukkan mode teks ke dalam encoder. Tidak ada yang ditempelkan yang diunggah.