Enkode / Dekode Base64
Ubah teks menjadi Base64 dan dekode kembali di browser Anda. Aman untuk UTF-8 dengan varian URL-safe opsional — tidak ada data yang pernah diunggah ke server.
Input
0 baris · 0 karakter
Mode
URL-safe
Cara menggunakan Enkode / Dekode Base64
- 1
Pilih Encode atau Decode
Atur Mode ke Encode untuk mengubah teks menjadi Base64, atau Decode untuk mengubah string Base64 kembali menjadi teks yang terbaca.
- 2
Masukkan input Anda
Ketik atau tempel teks atau Base64 Anda ke panel input, dan secara opsional aktifkan URL-safe untuk alfabet yang ramah URL dan nama file.
- 3
Konversi
Klik Convert untuk memproses input secara lokal di browser Anda, dengan dukungan penuh UTF-8 dan emoji.
- 4
Salin atau tukar
Salin hasilnya, atau gunakan Swap untuk memindahkan output kembali ke input dan membalik mode untuk perjalanan bolak-balik yang cepat.
Panduan Lengkap Pengkodean Base64
Apa sebenarnya Base64 itu
Base64 adalah skema pengkodean biner-ke-teks: ia merepresentasikan data biner sembarang hanya dengan 64 karakter ASCII yang dapat dicetak dan yang mampu bertahan saat melewati sistem yang dirancang untuk teks biasa. Alfabet standarnya, yang didefinisikan dalam RFC 4648, terdiri dari 26 huruf besar A-Z, 26 huruf kecil a-z, sepuluh angka 0-9, serta dua simbol + dan /. Itu adalah 64 simbol, yang persis cukup untuk merepresentasikan enam bit data per karakter, karena dua pangkat enam adalah 64.
Namanya bersifat harfiah. Sama seperti basis 10 menggunakan sepuluh simbol angka dan basis 16 (heksadesimal) menggunakan enam belas, basis 64 menggunakan enam puluh empat. Pengkodean ini sepenuhnya dapat dibalik dan tanpa kehilangan data: bita apa pun yang Anda kodekan akan kembali identik bita demi bita saat Anda mendekodekannya, dan itulah inti seluruh idenya.
Mengapa Base64 ada
Banyak saluran dirancang untuk membawa teks, bukan bita mentah, dan saluran itu merusak apa pun yang berada di luar rentang ASCII yang dapat dicetak. Email adalah contoh klasiknya: standar SMTP yang asli adalah protokol tujuh-bit yang dapat merusak atau memangkas bit tertinggi dari data biner, sehingga MIME menggunakan Base64 untuk mengirim lampiran gambar dan berkas dengan aman. Masalah yang sama muncul setiap kali data biner perlu menumpang di dalam sesuatu yang berbasis teks.
Anda menjumpai Base64 terus-menerus tanpa menyadarinya. Data URI menyematkan gambar langsung di dalam HTML dan CSS sebagai data:image/png;base64,iVBORw0K... sehingga ikon kecil tidak memerlukan permintaan terpisah. JSON Web Token (JWT) adalah tiga segmen Base64url yang digabungkan dengan titik. Autentikasi HTTP Basic mengirimkan Base64 dari username:password. Peramban menyediakannya melalui fungsi bawaan btoa dan atob, dan ini adalah cara standar untuk menyelipkan muatan biner ke dalam JSON, XML, atau sebuah URL.
Cara kerja pemetaan 3-bita ke 4-karakter
Base64 memproses masukan tiga bita sekaligus. Tiga bita adalah 24 bit, dan 24 terbagi rata menjadi empat kelompok berisi enam bit. Setiap kelompok enam-bit adalah angka dari 0 hingga 63, yang menjadi satu karakter dari alfabet. Jadi setiap 3 bita masukan selalu menghasilkan tepat 4 karakter keluaran, itulah sebabnya Base64 menggelembungkan data sekitar sepertiga: bentuk terkodenya kira-kira 133% dari ukuran aslinya.
Posisi dalam alfabetlah yang penting. Indeks 0 adalah A, indeks 25 adalah Z, indeks 26 adalah a, indeks 51 adalah z, indeks 52 adalah 0, indeks 61 adalah 9, indeks 62 adalah +, dan indeks 63 adalah /. Untuk membaca sebuah string terkode dengan tangan, Anda memetakan setiap karakter kembali ke indeksnya, menuliskan indeks itu sebagai enam bit, menggabungkan semua bitnya, lalu mengiris ulang aliran tersebut menjadi bita delapan-bit.
Contoh terselesaikan: mengkodekan "Man"
Ambil ketiga huruf M, a, n. Nilai bita ASCII-nya adalah 77, 97, dan 110, yang dalam biner adalah 01001101, 01100001, dan 01101110. Gabungkan ke-24 bit itu menjadi satu aliran: 010011010110000101101110. Sekarang iris menjadi empat kelompok enam-bit: 010011, 010110, 000101, 101110.
Kelompok-kelompok itu adalah angka 19, 22, 5, dan 46. Mencari masing-masing di dalam alfabet menghasilkan T (indeks 19), W (indeks 22), F (indeks 5), dan u (indeks 46). Jadi "Man" terkode menjadi "TWFu" — konversi tiga-bita-ke-empat-karakter yang rapi tanpa perlu padding. Pendekodean hanya menjalankan langkah-langkahnya secara terbalik.
Padding dan tanda sama dengan
Masukan tidak selalu kelipatan tiga bita, sehingga Base64 memerlukan cara untuk menandakan sisanya. Ketika tersisa satu bita, ia terkode menjadi dua karakter yang diikuti dua tanda padding (==); ketika tersisa dua bita, keduanya terkode menjadi tiga karakter yang diikuti satu tanda padding (=). Karakter padding tidak membawa data; ia hanya memberi tahu pendekode berapa banyak bita asli yang diwakili kelompok terakhir.
Sebagai contoh, huruf tunggal "M" (bita 77, biner 01001101) di-padding hingga enam bit menjadi 010011 dan 010000, menghasilkan T dan Q, lalu dilengkapi dengan == menjadi "TQ==". Kata "Ma" (dua bita) terkode menjadi "TWE=" dengan satu tanda sama dengan di akhir. Menghitung tanda sama dengan di akhir string Base64 mana pun memberi tahu Anda apakah panjang aslinya merupakan kelipatan tiga.
Varian URL-safe
Karakter standar + dan / bermasalah di tempat-tempat yang sudah memiliki makna untuknya. Garis miring memisahkan segmen jalur dalam sebuah URL, dan tanda plus ditafsirkan sebagai spasi dalam query string yang dikodekan-formulir, sehingga nilai Base64 biasa dapat rusak saat dimasukkan ke dalam tautan atau nama berkas. Alfabet URL-safe, yang juga dari RFC 4648, memperbaiki ini dengan menukar + menjadi - (tanda hubung) dan / menjadi _ (garis bawah).
Mengaktifkan opsi URL-safe pada alat ini menghasilkan varian tersebut dan juga membuang padding = di akhir, karena tanda sama dengan pun perlu di-escape dalam URL. Hasilnya langsung pas dimasukkan ke parameter query, segmen jalur, cookie, dan nama berkas. Inilah pengkodean yang digunakan oleh JWT dan banyak API web. Cukup ingat untuk mendekodekan masukan URL-safe dengan pendekode URL-safe, karena karakter - dan _ tidak valid dalam alfabet standar.
Base64 adalah pengkodean, bukan enkripsi
Inilah fakta tunggal yang paling penting sekaligus paling disalahpahami tentang Base64. Pengkodean menyamarkan data hanya dari pandangan mata telanjang; ia sama sekali tidak memberikan kerahasiaan. Tidak ada kunci dan tidak ada rahasia, sehingga siapa pun dapat mendekodekan string Base64 secara instan menggunakan alat apa pun, termasuk yang satu ini. Memperlakukan Base64 sebagai cara menyembunyikan kata sandi, kunci API, atau data pribadi adalah kesalahan keamanan yang serius.
Base64 memecahkan masalah pengangkutan, bukan masalah kerahasiaan: ia membuat data biner aman untuk dilewatkan melalui saluran teks saja. Jika Anda membutuhkan perlindungan yang sesungguhnya, enkripsikan data dengan algoritma yang sebenarnya seperti AES terlebih dahulu, dan baru setelah itu kodekan teks sandi tersebut dengan Base64 jika Anda juga perlu mengirimkannya sebagai teks. Pengkodean dan enkripsi adalah dua tugas yang berbeda.
Kesalahan umum dan tip praktis
Kesalahan yang paling sering terjadi adalah kebingungan kumpulan karakter. Base64 sendiri hanya mengenal bita, jadi sebelum Anda dapat mengkodekan teks, Anda harus memutuskan bagaimana teks itu menjadi bita. Alat ini menggunakan UTF-8, itulah sebabnya huruf beraksen dan emoji bolak-balik dengan benar; mengkodekan string yang sama sebagai kumpulan karakter yang berbeda di tempat lain menghasilkan Base64 yang berbeda pula. Jebakan umum kedua adalah spasi kosong: pemutus baris yang disisipkan oleh sebagian pengkode (MIME membungkus pada 76 karakter) bukan bagian dari data dan harus dihapus sebelum pendekodean, meskipun pendekode yang ketat mungkin menolaknya.
Jebakan lain meliputi mencampuradukkan alfabet standar dan URL-safe, lupa bahwa string tanpa padding mungkin perlu paddingnya dipulihkan sebelum pendekode yang ketat mau menerimanya, dan mengira Base64 menghemat ruang — padahal tidak pernah, ia selalu menumbuhkan muatan sekitar sepertiga. Ketika pendekodean gagal di sini, periksa lebih dulu adakah spasi nyasar, tanda sama dengan yang hilang, atau - maupun _ yang merupakan milik alfabet URL-safe.
Pertanyaan yang sering diajukan
Apa perbedaan antara Encode dan Decode di sini?
Apa fungsi opsi URL-safe?
Apakah alat ini menangani emoji dan karakter non-Inggris?
Apa yang terjadi jika saya menempel Base64 yang tidak valid saat decoding?
Apakah data saya dikirim ke mana pun?
Alat terkait
Lanjutkan dengan alat praktis ini