Kod dan nyahkod Base64
**URL:** `/base64-encode-decode/` **Schema:** `WebApplication` + `FAQPage` + `BreadcrumbList`
Semua pengiraan dijalankan dalam pelayar. Tiada apa yang anda masukkan dihantar ke pelayan.
Hasil dikemas kini semasa menaip. Ctrl/Cmd+Enter menyalin hasil utama.
Hasil
—
Paparan bit
Tunjuk kerja
Base64 Encode dan Decode menukarkan bait arbitrari kepada rentetan ASCII menggunakan abjad RFC 4648 dan membalikkan rentetan itu kembali kepada bait asal. Mod teks menerima pengekodan aksara seperti UTF-8; mod fail membaca muat naik melalui FileReader penyemak imbas dan boleh mengeluarkan URI data: untuk dibenamkan. Pengekodan bukan penyulitan. Sesiapa sahaja yang menerima rentetan itu boleh menyahkodnya.
Semua pengekodan dan penyahkodan berjalan dalam penyemak imbas anda. Tiada apa-apa yang anda tampal dihantar ke pelayan.
Kod teks atau fail ke Base64
Pengekodan mengambil bait mentah dan menulis rentetan A hingga Z, a hingga z, 0 hingga 9, tambah, slash dan padding =. Tampal teks atau pilih fail, pilih pengekodan aksara apabila sumbernya adalah teks, dan baca output.
Mod fail sesuai dengan imej dan dokumen kecil yang mesti bergerak dalam JSON, XML atau e-mel tanpa saluran binari.
Outputnya selamat untuk diangkut melalui sistem yang merosakkan binari sewenang-wenangnya, seperti gerbang mel lama atau salin-tampal ke dalam XML. Ia lebih panjang daripada input mengikut reka bentuk. Input kosong yang tidak sah tidak menghasilkan rentetan; alat menunggu bait sebelum mengeluarkan aksara.
Nyahkod rentetan Base64 kembali kepada data
Penyahkodan membalikkan carian abjad, membina semula aliran bit asal dan mengembalikan teks atau fail yang boleh dimuat turun. Mengalas aksara = pada penghujungnya adalah penting: ia menandakan bilangan bait yang berada dalam kumpulan terakhir yang tidak lengkap. Aksara di luar abjad menyebabkan ralat yang jelas dan bukannya penyahkod separa senyap.
Ruang putih sering diabaikan jadi rentetan yang disalin daripada sijil PEM atau badan MIME masih berfungsi. Rentetan yang kelihatan seperti Base64 tetapi menggunakan abjad selamat URL memerlukan mod penyahkod selamat URL, atau tanda sempang dan garis bawah akan ditolak sebagai tidak sah dalam abjad standard.
Fahami cara pengekodan Base64 berfungsi
Base64 memproses input dalam blok tiga bait (24 bit). 24 bit tersebut dibahagikan kepada empat kumpulan 6 bit. Setiap nilai 6-bit ialah indeks dari 0 hingga 63 ke dalam abjad 64 aksara. Oleh itu, tiga bait input menjadi empat aksara keluaran.
Bytes: [ byte1 ][ byte2 ][ byte3 ]
Bits: aaaaaaaa bbbbbbbb cccccccc
Groups: aaaaaa aabbbb bbbbcc cccccc
Chars: Char1 Char2 Char3 Char4
Apabila kurang daripada tiga bait kekal, pengekod masih mengeluarkan empat aksara tetapi menambah padding supaya penyahkod mengetahui panjang asal. Pengumpulan semula bit ialah keseluruhan algoritma; tiada checksum dan tiada kunci.
Mengekod perkataan Anjing langkah demi langkah
Perkataan Dog ialah tiga bait ASCII, jadi ia mengisi satu kumpulan Base64 dan mengekod tanpa aksara padding. Output lekapan ialah RG9n. Menjalankan bait ke bit, mengumpul semula ke dalam indeks 6-bit dan membaca abjad RFC 4648 menunjukkan sebab empat aksara tersebut muncul dan cara mana-mana blok tiga bait mengikut laluan yang sama.
1. Tulis bait. D = 0x44 = 01000100 o = 0x6F = 01101111 g = 0x67 = 01100111
2. Menggabungkan 24 bit. 01000100 01101111 01100111
3. Bahagikan kepada kumpulan 6-bit. 010001 000110 111101 100111
4. Tukarkan setiap kumpulan kepada indeks perpuluhan. 17, 6, 61, 39
5. Cari abjad. Indeks 17 = R, 6 = G, 61 = 9, 39 = n
Keputusan: RG9n. Penyahkodan RG9n mengembalikan tiga bait asal dan teks Dog di bawah UTF-8 atau ASCII.
Fahami padding dengan tanda sama
Padding muncul apabila kiraan bait bukan gandaan tiga. Satu bait yang tinggal menghasilkan dua aksara abjad dan dua tanda =. Dua bait sisa menghasilkan tiga aksara dan satu =. Lekapan Do → RG8= dan Dogs → RG9ncw== menunjukkan kedua-dua baki bekas di sebelah perkataan tiga bait Dog yang tidak berlapik.
| Input | Bytes | Encoded | Padding |
|---|---|---|---|
| Dog | 3 | RG9n | none |
| Do | 2 | RG8= | one = |
| Dogs | 4 | RG9ncw== | two = |
Laku ialah dua bait: 01000100 01101111. Selepas pengumpulan 6-bit, terdapat hanya bit yang mencukupi untuk tiga aksara yang bermakna (RG8), dan satu padding = mengisi slot keempat. Anjing ialah empat bait: pengekodan kumpulan tiga bait penuh sebagai RG9n, kemudian pengekodan baki satu bait sebagai cw==. Mengeluarkan padding dengan tangan tanpa melaraskan pemecahan panjang bit penyahkodan; biarkan aksara = di tempatnya apabila menampal.
Baca abjad Base64
RFC 4648 mentakrifkan 64 aksara ditambah tanda padding =. Indeks 0 hingga 25 ialah A hingga Z, 26 hingga 51 ialah a hingga z, 52 hingga 61 ialah 0 hingga 9, indeks 62 ialah + dan indeks 63 ialah /.
Indeks 0 ialah A, bukan 0, yang menghalang sesiapa sahaja yang menjangkakan digit untuk mendahului abjad.
| Index range | Aksara |
|---|---|
| 0 to 25 | A to Z |
| 26 to 51 | a to z |
| 52 to 61 | 0 to 9 |
| 62 | + |
| 63 | / |
| padding | = |
Panel abjad kalkulator menyenaraikan jadual yang sama yang digunakan oleh pengekod, jadi aksara yang mencurigakan boleh disemak terhadap set standard. Rentetan penuh ialah ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/.
Gunakan varian Base64 yang selamat untuk URL
Abjad selamat URL (base64url) menggantikan + dengan - dan / dengan _. Padding mungkin ditinggalkan dalam beberapa protokol. Token Web JSON menggunakan varian ini supaya segmen token boleh berada dalam URL dan pengepala HTTP tanpa pengekodan peratus aksara tambah dan slash.
Rentetan standard dan selamat URL tidak boleh ditukar ganti. Penyahkodan muatan JWT dengan abjad standard gagal pada tanda sempang. Alat ini menawarkan mod selamat URL yang jelas untuk pengekodan dan penyahkod. Peratusan pengekodan URL ialah masalah yang berbeza; gunakan halaman Pengekodan dan Nyahkod URL apabila matlamatnya ialah RFC 3986 melarikan diri daripada Base64.
Akaun untuk peningkatan saiz
Setiap tiga bait menjadi empat aksara, jadi panjang yang dikodkan adalah kira-kira 4/3 daripada input, peningkatan 33 peratus sebelum pemisah baris. Padding boleh menambah satu atau dua aksara tambahan pada kumpulan terakhir. URI data dan lampiran e-mel merasakan kos ini dengan cepat: imej 300 KB menjadi kira-kira 400 KB teks.
encoded_length ≈ 4 × ceil(byte_length / 3)
Pembalut baris pada 76 aksara, biasa dalam MIME, menambah bait baris baharu di atas. Lebih suka lampiran binari atau format termampat apabila saiz penting; gunakan Base64 apabila saluran benar-benar tidak boleh membawa bait mentah.
Pilih pengekodan aksara
Base64 mengekod bait, bukan aksara abstrak. Huruf yang sama menghasilkan bait yang berbeza di bawah UTF-8, UTF-16, Shift JIS atau Big5. Penyahkodan kemudian mentafsir dengan set aksara yang salah menghasilkan mojibake walaupun lapisan Base64 sempurna, jadi set aksara mod teks mesti sepadan dengan pengeluar pada pengekodan dan pengguna pada penyahkod.
| 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 perkataan Dog, ASCII dan UTF-8 menghasilkan tiga bait yang sama, jadi RG9n adalah sama. Teks bukan ASCII menyimpang. Pilih set charset yang sepadan dengan pengeluar sebelum pengekodan, dan set charset yang sama selepas penyahkodan, atau perjalanan pergi balik akan kelihatan seperti pepijat Base64 apabila kesilapan berlaku di hulu.
Soalan lazim
Adakah penyulitan Base64?
Tidak. Base64 ialah pengekodan yang boleh diterbalikkan oleh sesiapa sahaja dengan abjad awam. Ia tidak menyembunyikan apa-apa. Gunakan algoritma kriptografi sebenar apabila kerahsiaan diperlukan; gunakan Base64 apabila saluran memerlukan bait selamat ASCII.
Mengapakah output Base64 berakhir dengan tanda sama?
Aksara = adalah berlapik. Mereka menandakan bahawa kumpulan input akhir mempunyai satu atau dua bait dan bukannya tiga. Lakukan mengekod kepada RG8= dan Anjing kepada RG9ncw==. Simpan padding semasa menyahkod melainkan protokol mendokumenkan bahawa ia telah dilucutkan.
Apakah yang dikodkan oleh Anjing?
Anjing mengekod kepada RG9n tanpa padding, kerana tiga bait mengisi satu kumpulan Base64 dengan tepat. Pengumpulan semula bit langkah demi langkah ditunjukkan dalam contoh yang dikerjakan pada halaman ini.
Apakah perbezaan antara Base64 standard dan selamat URL?
Base64 yang selamat URL menggunakan - dan _ bukannya + dan /. JWT dan beberapa pembenaman nama fail menggunakan abjad selamat URL. Penyahkodan dengan abjad yang salah gagal pada aksara yang diganti itu.
Berapa besarkah Base64 daripada yang asal?
Kira-kira satu pertiga lebih besar. Tiga bait menjadi empat aksara, jadi nisbahnya ialah 4/3 sebelum padding dan pemisah baris. Muatan 3,000 bait menjadi 4,000 aksara Base64.
Bolehkah Base64 mengekod fail, bukan sahaja teks?
ya. Mod fail membaca muat naik dalam penyemak imbas dan mengekodkan bait mentahnya. Laluan terbalik menyahkod kepada gumpalan yang boleh dimuat turun. Fail besar meningkatkan penggunaan memori dalam tab; pastikan muat naik sederhana.
Mengapa teks yang dinyahkod kelihatan salah selepas nyahkod yang betul?
Lapisan Base64 memulihkan bait, tetapi pengekodan aksara yang digunakan untuk mentafsir bait tersebut tidak sepadan dengan pengeluar. Cuba UTF-8 dahulu, kemudian set charset yang sebenarnya digunakan oleh sistem sumber.
Adakah alat ini memuat naik rahsia yang ditampal?
Tidak. Pengekodan dan penyahkodan dijalankan secara setempat. Kunci API, token dan serpihan sijil yang ditampal ke dalam kotak tidak dihantar ke pelayan. Janji itu sepadan dengan peraturan reka bentuk untuk semua halaman pengekodan pada Kalkulator Pantas.
Adakah Base64 sama dengan pengekodan URL?
No. Base64 memetakan binari kepada abjad 64 aksara untuk pengangkutan. Pengekodan URL (pengekodan peratus) melepaskan aksara tersimpan di dalam URI setiap RFC 3986. Ia menyelesaikan masalah yang berbeza dan bukan pengganti antara satu sama lain.
Apakah RFC mentakrifkan abjad?
RFC 4648 mentakrifkan abjad Base64 standard dan selamat URL serta peraturan padding yang digunakan di sini. Dokumen lama seperti RFC 2045 menerangkan Base64 dalam konteks MIME dengan mekanik yang serupa.
Ringkasan
Base64 Encode dan Decode memetakan bait ke abjad RFC 4648 dalam kumpulan 6-bit dan membalikkan proses secara setempat dalam penyemak imbas. Dog menjadi RG9n, Do menjadi RG8= dan Dogs menjadi RG9ncw==, menggambarkan padding untuk baki satu dan dua bait.
Abjad selamat URL menukar +// untuk -/_, output meningkat kira-kira satu pertiga dan pilihan set aksara menentukan bait mana yang disuakan oleh mod teks ke dalam pengekod. Tiada apa-apa yang ditampal dimuat naik.