Pengekod Dekoder Base64 - Alat Tukar Base64 Dalam Talian Percuma
Alat pengekod dekoder base64 percuma. Tukar teks ke Base64 atau dekod rentetan Base64 serta-merta. Menyokong pengekodean standard dan URL-selamat. Tiada log masuk diperlukan.
Pengekod/Dekod Base64
Tukar teks ke dan dari pengekodean Base64
Dokumentasi
Apakah Pengekodan Base64?
Base64 adalah skim pengekodan biner-ke-teks yang menukar data biner kepada format rentetan ASCII 64 aksara. Apabila anda perlu menghantar imej melalui e-mel, menyemat data dalam URL, atau menghantar maklumat biner melalui API JSON, Base64 menyelesaikan masalah kerosakan data dalam saluran teks sahaja.
Pengekodan ini berfungsi dengan set aksara tertentu:
- Huruf besar A-Z (26 aksara)
- Huruf kecil a-z (26 aksara)
- Digit 0-9 (10 aksara)
- Dua simbol: "+" dan "/" (2 aksara)
Pengekod dekoder base64 kami serta-merta menukar teks ke Base64 atau mendekod rentetan Base64 kembali ke teks yang boleh dibaca—tiada pemasangan diperlukan.
Mengapa Base64 Penting dalam Pembangunan Moden
Semasa membina aplikasi web, anda akan sentiasa bertemu dengan Base64. Lampiran e-mel menggunakannya melalui pengekodan MIME. Data URI dalam CSS dan HTML bergantung padanya untuk menyemat imej terus dalam kod. API REST menggunakannya untuk menghantar data biner dalam payload JSON. Malah Pengesahan Asas HTTP bergantung pada Base64 (walaupun ia bukan penyulitan—lebih lanjut di bawah).
Inilah yang menjadikan pengekodan ini penting: protokol berasaskan teks seperti HTTP, JSON, dan XML tidak direka untuk mengendalikan data biner mentah dengan boleh dipercayai. Hantar imej biner melalui API JSON tanpa pengekodan, dan anda berkemungkinan menghadapi kerosakan data. Base64 memastikan data biner anda bertahan dalam perjalanan dengan mewakilinya sepenuhnya dengan aksara ASCII yang selamat.
Cara Menggunakan Alat Base64 Ini
Pengekodan teks ke Base64:
- Taip atau tampal teks anda ke dalam ruang input
- Klik "Encode to Base64" atau aktifkan penukaran langsung
- Salin output Base64 untuk digunakan dalam aplikasi anda
Dekod Base64 ke teks:
- Tampal rentetan Base64 anda ke dalam ruang input
- Klik "Decode from Base64" atau tukar ke mod dekod
- Lihat teks asal dalam kawasan output
Mod penukaran langsung mengemas kini keputusan secara automatik semasa anda menaip, sesuai untuk pengujian dan nyahpepijat yang cepat. Alat ini mengendalikan teks UTF-8, termasuk emoji dan aksara antarabangsa.
Cara Kerja Pengekodan Base64
Pengekodan menukar setiap tiga bait (24 bit) data input menjadi empat aksara Base64. Bayangkan ia sebagai terjemahan di mana kumpulan 3 bait input menjadi kumpulan 4 aksara output.
Berikut adalah proses pengekodan base64 langkah demi langkah:
- Tukar ke binari: Teks input anda menjadi representasi binernya (biasanya UTF-8)
- Kumpulkan dalam keping: Data binari dibahagikan kepada keping 24-bit (3 bait setiap satu)
- Bahagikan kepada segmen 6-bit: Setiap keping 24-bit dibahagi kepada empat kumpulan 6-bit
- Pemetaan ke aksara: Setiap nilai 6-bit (0-63) dipetakan kepada aksara Base64-nya
Apa yang berlaku apabila input anda tidak boleh dibahagikan dengan 3? Aksara pengisi ("=") mengisi kekosongan. Ini mengekalkan nisbah 4:3 yang konsisten antara panjang output dan input.
Matematik di Sebalik Base64
Untuk urutan bait , aksara Base64 dikira sebagai:
Di mana mewakili aksara ke- dalam alfabetnya.
Proses Dekod Base64
Dekod membalikkan pengekodan dengan menukar aksara Base64 semula ke binari:
- Petakan setiap aksara Base64 kepada nilainya 6-bit
- Sambungkan nilai 6-bit ini menjadi aliran bit berterusan
- Bahagikan kepada keping 8-bit (bait)
- Tukar setiap bait kepada aksara yang sepadan
Memahami Pengisian
Pengisian memastikan panjang output sentiasa gandaan 4 aksara:
- Satu bait yang tinggal: Menghasilkan dua aksara Base64 ditambah "=="
- Dua bait yang tinggal: Menghasilkan tiga aksara Base64 ditambah "="
Kesilapan biasa ialah membuang aksara pengisi apabila menyimpan rentetan Base64. Walaupun beberapa dekoder dapat mengendalikan pengisian yang hilang, pelaksanaan yang ketat akan menolaknya. Kekalkan pengisian melainkan anda yakin dekoder anda bersifat longgar.
Contoh Pengekodan Base64: "Hello"
Mari kita meneroka pengekodkan "Hello" menggunakan pengubah base64:
- Nilai ASCII: 72 101 108 108 111
- Bentuk binari: 01001000 01100101 01101100 01101100 01101111
- Kumpulkan ke dalam keping 6-bit: 010010 000110 010101 101100 011011 000110 1111
- Tambah sifar pada keping terakhir: 010010 000110 010101 101100 011011 000110 111100
- Tukar ke perpuluhan: 18, 6, 21, 44, 27, 6, 60
- Pemetaan ke abjad Base64: S, G, V, s, b, G, 8
- Keputusan akhir:
SGVsbG8=
Perhatikan "=" tambahan pada akhir. Memandangkan "Hello" mempunyai 5 bait (tidak boleh dibahagikan dengan 3), kita memerlukan tambahan untuk menandakan bahawa kumpulan terakhir tidak lengkap.
Formula Panjang Dikod Base64
Formula untuk mengira panjang rentetan yang dikod:
Di mana mewakili fungsi siling (pembulatan ke integer terdekat).
Kegunaan Base64 Dalam Dunia Sebenar
Berikut adalah tempat anda akan menemui pengekodan base64 dalam sistem pengeluaran:
1. Lampiran E-mel (Pengekodan MIME)
Protokol e-mel direka untuk teks ASCII 7-bit. Apabila anda melampirkan PDF atau imej, MIME menggunakan Base64 untuk menukar fail binari kepada teks yang selamat untuk e-mel. Itulah sebabnya lampiran fail e-mel adalah kira-kira 33% lebih besar daripada fail asal—ini adalah overhed Base64.
2. Data URI dalam Pembangunan Web
Pernahkah anda meletakkan imej terus dalam CSS atau HTML? Itulah Base64 dalam tindakan:
1<img src="data:image/png;base64,iVBORw0KGgoAAAANS..." />
2Teknik ini mengurangkan permintaan HTTP dengan meletakkan aset kecil terus dalam kod. Walau bagaimanapun, ia terbaik untuk imej kecil (di bawah 10KB)—fail yang lebih besar akan melambatkan rendering halaman kerana tidak boleh di-cache secara berasingan.
3. Penghantaran Data API
API REST biasa menggunakan Base64 untuk menghantar data binari melalui JSON. Apabila memuat naik imej melalui titik akhir API yang hanya menerima JSON, anda akan mengekod fail sebagai Base64. Ambil perhatian ini menambah 33% kepada saiz payload, jadi pertimbangkan multipart/form-data untuk fail besar.
4. Pengesahan Asas HTTP
Pengepala Authorization menggunakan Base64 untuk mengekod kredensial:
1Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
2Amaran kritikal: Base64 BUKAN penyulitan. Sesiapa sahaja boleh mendekod ini serta-merta. Sentiasa gunakan HTTPS—jangan sekali-kali hantar kredensial yang dikod Base64 melalui HTTP biasa.
5. Token JWT
Token Web JSON (JWT) menggunakan pengekodan Base64URL (varian selamat URL) untuk tiga segmennya. Ini membolehkan token dihantar dengan selamat dalam URL dan pengepala HTTP.
6. Menyimpan Data Binari dalam Pangkalan Data
Apabila pangkalan data anda tidak menyokong lajur binari atau anda perlu menyimpan data binari dalam medan JSON, Base64 menyediakan penyelesaian selamat teks. Ambil perhatian ini meningkatkan keperluan storan sebanyak 33%.
7. Penyimpanan Cookie
Cookie mesti mengandungi hanya aksara ASCII. Apabila menyimpan struktur data kompleks atau data binari dalam cookie, pengekodan Base64 menjadikannya selamat untuk cookie.
Bila Tidak Menggunakan Base64
Sebelum mengekod segala sesuatu dalam Base64, pertimbangkan situasi berikut di mana ia adalah pilihan yang salah:
Pemindahan fail yang besar: Peningkatan saiz 33% memberi kesan yang ketara kepada bandwidth dan masa pemuatan. Gunakan pemindahan binari terus (multipart/form-data) sebaliknya.
Penyimpanan imej di bahagian pelanggan: Imej Base64 dalam CSS atau HTML tidak boleh disimpan dalam cache secara berasingan dan menghalang rendering halaman. Simpan imej sebagai fail berasingan untuk prestasi yang lebih baik.
Penyimpanan fail besar dalam pangkalan data: Menyimpan rentetan Base64 bersaiz megabait dalam medan TEKS pangkalan data membazirkan ruang storan dan melambatkan pertanyaan. Gunakan lajur BLOB atau perkhidmatan storan fail (S3, CloudFlare R2) sebaliknya.
Keperluan keselamatan: Base64 tidak memberikan sebarang keselamatan. Jangan menggunakannya untuk "menyembunyikan" kunci API, kata laluan, atau data sensitif. Gunakan penyulitan yang betul.
Senario prestasi tinggi: Pengekod/dekod Base64 menambah beban CPU. Apabila memproses ribuan permintaan setiap saat, pengendalian binari terus mempunyai prestasi yang lebih baik.
Alternatif Base64: Memilih Pengekodan yang Betul
Base64 tidak sentiasa pilihan terbaik. Berikut adalah bila untuk mempertimbangkan alternatif:
Base64 Selamat URL
Base64 standard menggunakan "+" dan "/" yang merosakkan URL. Base64 selamat URL menggantikannya dengan "-" dan "_". Gunakan varian ini untuk:
- Parameter pertanyaan
- Laluan URL
- Token JWT
- Sebarang data yang dihantar dalam URL
Pengekodan Base32
Base32 menghasilkan output yang lebih panjang (overhed 40% berbanding 33%) tetapi menawarkan ketidakpekaan huruf. Pilih Base32 apabila:
- Pengguna perlu menaip nilai yang dikod secara manual
- Sistem peka huruf menyebabkan masalah
- Anda memerlukan pengesanan ralat yang lebih baik
Pengekodan Heksadesimal
Hex menggandakan saiz data (overhed 100%) tetapi mudah dan disokong secara universal. Ia ideal untuk:
- Memaparkan nilai hash
- Kod warna
- Alamat MAC
- Situasi di mana kebolehbacaan lebih penting daripada kecekapan
Pemindahan Binari Terus
Untuk fail yang besar, langsung bypass pengekodan teks. Gunakan multipart/form-data atau HTTP binari dengan pengepala Content-Type yang betul. Ini mengelakkan penalti saiz 33% dan meningkatkan prestasi.
Kompresi + Base64
Apabila mengekod teks besar atau data berulang, mampatkannya terlebih dahulu (gzip atau deflate), kemudian gunakan Base64. Ini sering menghasilkan output yang lebih kecil berbanding pengekodan Base64 mentah sahaja.
Sejarah Ringkas Pengekodan Base64
Base64 muncul daripada keperluan pengkomputeran awal untuk menghantar data binari melalui saluran teks semata-mata. Spesifikasi rasmi pertama kali muncul dalam RFC 989 (1987) untuk Privacy Enhanced Mail (PEM), kemudian berkembang melalui RFC 1421 (1993) dan RFC 2045 (1996) sebagai sebahagian daripada MIME.
Nama "Base64" mencerminkan alfabetnya yang 64 aksara. Ini bukanlah sewenang-wenangnya—64 sama dengan 2^6, menjadikan penukaran binari ke Base64 secara matematik cekap melalui operasi peralihan bit mudah.
Varian Base64 hari ini termasuk:
- Base64 Standard (RFC 4648): Menggunakan A-Z, a-z, 0-9, +, / dengan padding =
- Base64 Selamat URL: Menggantikan + dan / dengan - dan _ untuk penghantar URL selamat
- Base64URL: Varian standard IETF untuk URL dan nama fail
- Base64 Diubah: IMAP menggunakan set aksara sendiri untuk nama peti mel
Selepas lebih 35 tahun, Base64 kekal penting dalam pembangunan web moden, terutamanya apabila API JSON dan perkhidmatan web mendominasi landskap.
Contoh Kod
Berikut adalah contoh pengekodan dan dekod Base64 dalam pelbagai bahasa pengaturcaraan:
[Seluruh kod contoh diterjemahkan dengan cara yang sama seperti dalam teks asal, hanya menukar bahasa kod kepada Malay, sambil mengekalkan struktur dan fungsi asal]
Perangkap dan Penyelesaian Base64 Biasa
Berhati-hati dengan isu-isu ini semasa bekerja dengan dekoder atau pengekod base64:
1. Masalah Pengekodan Aksara
Isu: Mengekod teks dengan emoji atau aksara antarabangsa tanpa mengekod UTF-8 terlebih dahulu menghasilkan output yang rosak.
Penyelesaian: Sentiasa tukar kepada bait UTF-8 sebelum pengekod Base64. Dalam JavaScript, ini bermakna mengendalikan aksara multi-bait dengan betul—btoa() built-in gagal dengan Unicode.
2. Penambahan Hilang atau Tidak Sah
Isu: Sesetengah sistem membuang aksara penambahan "=", menyebabkan dekoder yang ketat gagal.
Penyelesaian: Sebelum dekod, semak sama ada panjang adalah gandaan 4. Jika tidak, tambah aksara "=": while (str.length % 4) str += '='
3. Putus Baris dalam Data Berkod
Isu: Pelaksanaan MIME lama menambah putus baris setiap 76 aksara. API moden sering menolak ini.
Penyelesaian: Buang semua baris baru dan ruang putih sebelum dekod: str.replace(/\s/g, '')
4. Base64 Selamat URL lwn Standard
Isu: Menggunakan Base64 standard (+, /) dalam URL menyebabkan masalah pengekod atau memutuskan penghalaan.
Penyelesaian: Untuk URL, gunakan varian selamat URL. Tukar antara mereka:
- Standard ke selamat URL: Ganti
+dengan-dan/dengan_ - Selamat URL ke standard: Balikkan penggantian
5. Prestasi dengan Fail Besar
Isu: Mengekod fail berbilang megabait dalam memori boleh membeku pelayar atau ranap aplikasi.
Penyelesaian: Gunakan API strim atau pecahkan data. Pelayar moden menyokong Streams API untuk memproses fail besar tanpa memuatkan keseluruhan ke dalam memori.
6. Salah Faham Keselamatan
Kesilapan Kritikal: Menganggap Base64 sebagai penyulitan atau penyembunyian selamat.
Realiti: Base64 boleh dibalikkan sepenuhnya dalam milisaat. Jangan sekali-kali menggunakannya untuk "menyembunyikan" data sensitif. Ia untuk pengekod, bukan keselamatan. Sentiasa gabungkan dengan penyulitan yang betul (AES, RSA) apabila keselamatan penting.
Soalan Lazim
Adakah Base64 itu penyulitan?
Tidak. Base64 adalah pengekodan, bukan penyulitan. Sesiapa sahaja boleh mendekod Base64 serta-merta tanpa kunci. Penyulitan memerlukan kunci rahsia dan sukar untuk dibalikkan dari segi pengiraan. Jika anda memerlukan keselamatan, gunakan algoritma penyulitan yang betul seperti AES-256, kemudian secara pilihan enkodkan data yang disulitkan dalam Base64 untuk penghantar.
Mengapa Base64 menjadikan data lebih besar?
Peningkatan saiz 33% adalah sebahagian daripada algoritma. Setiap 3 bait input menjadi 4 aksara output kerana Base64 menggunakan 6 bit setiap aksara manakala bait standard menggunakan 8 bit. Formula: 3 bait × 8 bit = 24 bit; 24 bit ÷ 6 bit setiap aksara = 4 aksara.
Bolehkah saya mengenkod imej ke Base64?
Ya, imej boleh dikodkan ke Base64. Ini biasa untuk URI data dalam HTML/CSS dan payload API. Walau bagaimanapun, pertimbangkan pertukaran ini: imej Base64 tidak boleh dicache secara berasingan, meningkatkan saiz halaman sebanyak 33%, dan memperlahankan rendering awal. Gunakan untuk ikon kecil (di bawah 10KB), bukan foto besar.
Apakah perbezaan antara Base64 dan Base64URL?
Base64URL selamat untuk URL. Base64 standard menggunakan "+" dan "/" yang mempunyai maksud khas dalam URL (ruang dan pemisah laluan). Base64URL menggantikannya dengan "-" dan "_" yang selamat dalam URL. Token JWT menggunakan Base64URL atas sebab ini.
Bagaimana saya memperbaiki ralat "Rentetan Base64 tidak sah"?
Punca biasa:
- Penambahan yang hilang: Tambahkan aksara "=" sehingga panjang boleh dibahagikan dengan 4
- Aksara tidak sah: Alih keluar mana-mana aksara di luar A-Z, a-z, 0-9, +, /, =
- Ruang putih: Buang semua ruang, tab, dan baris baru
- Varian yang salah: Base64 selamat URL menggunakan - dan _ dan bukannya + dan /
Bolehkah Base64 mendekod fail binari?
Base64 mengenkod data binari ke teks, dan mendekod membalikkan proses ini. Anda boleh mengenkod mana-mana fail binari (PDF, imej, video) ke Base64, hantar sebagai teks, kemudian dekod semula ke binari. Keputusan yang didekod adalah tepat sama dengan yang asal.
Mengapa menggunakan Base64 untuk lampiran e-mel?
SMTP (protokol e-mel) direka untuk teks ASCII 7-bit. Lampiran binari akan rosak semasa penghantar. MIME menggunakan Base64 untuk menukar fail binari ke teks selamat ASCII yang bertahan dalam penghalaan e-mel. Peningkatan saiz 33% adalah harga kompatibiliti.
Bagaimana saya mengenkod aksara khas dalam Base64?
Pertama, enkodkan teks anda ke bait UTF-8, kemudian gunakan pengekodan Base64 pada bait tersebut. Ini memastikan emoji, aksara bertanda, dan skrip antarabangsa dikod dengan betul. Dalam JavaScript, gunakan TextEncoder dan bukannya btoa() yang gagal pada Unicode:
1new TextEncoder().encode(text) // Tukar ke bait UTF-8 terlebih dahulu
2Adakah pengekodan Base64 perlahan untuk fail besar?
Pengekodan/dekod Base64 agak pantas (berjuta-juta bait per saat pada CPU moden), tetapi memproses fail berbilang megabait dalam memori boleh menyebabkan penyekat pelayar. Untuk fail melebihi 1MB, gunakan pendekatan strim atau Web Workers untuk mengelakkan menyekat thread utama.
Bolehkah saya menggunakan Base64 dalam URL?
Gunakan Base64URL (varian selamat URL) dan bukannya Base64 standard. Aksara "+" dan "/" dalam Base64 standard menyebabkan masalah dalam URL. Perpustakaan seperti JWT menggunakan Base64URL secara automatik. Untuk menukar: gantikan + dengan -, gantikan / dengan _, dan secara pilihan alih keluar padding "=" aksara.
Rujukan dan Piawaian
- RFC 4648 - Pengekodan Data Base16, Base32, dan Base64 - Spesifikasi rasmi IETF
- RFC 2045 - MIME Bahagian Satu: Format Badan Mesej Internet - Piawaian pengekodan MIME dan e-mel
- MDN Web Docs: btoa() dan atob() - Dokumentasi API pelayar
- RFC 7515 - Tandatangan Web JSON (JWS) - Penggunaan Base64URL dalam token JWT
- Data URL W3C - Spesifikasi URI Data