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 ialah cara menukar apa-apa data, termasuk data binari seperti imej, kepada teks biasa yang hanya terdiri daripada huruf, digit dan beberapa simbol. Pengekod base64 menukar data kepada bentuk teks ini. Penyahkod base64 menukarnya kembali kepada data asal. Program menggunakan Base64 untuk memindahkan data binari dengan selamat melalui sistem seperti e-mel atau JSON yang menjangkakan teks biasa.
Base64 menggunakan abjad yang terdiri daripada 64 aksara:
- Huruf besar AโZ (26 aksara)
- Huruf kecil aโz (26 aksara)
- Digit 0โ9 (10 aksara)
- Dua simbol, biasanya
+dan/(2 aksara)
Sesetengah sistem juga menggunakan tanda sama dengan (=) pada penghujung output sebagai pelapik. Pelapik bukan sebahagian daripada abjad yang terdiri daripada 64 aksara; fungsinya hanya melengkapkan panjang.
Mengapa Base64 wujud
Banyak protokol teks lama, termasuk e-mel (SMTP) dan sesetengah bahagian HTTP, dibina untuk membawa teks ASCII 7-bit. Protokol ini boleh merosakkan bait binari mentah, seperti bait dalam imej JPEG. Base64 mengelakkan masalah ini dengan mewakili setiap bait menggunakan aksara yang selamat dan boleh dicetak sahaja. Oleh itu, lampiran e-mel, imej yang dibenamkan dalam halaman web dan medan binari dalam JSON biasanya melalui Base64 terlebih dahulu.
Base64 bukan pemampatan dan bukan penyulitan. Output yang dikodkan sentiasa lebih besar daripada input, dan sesiapa sahaja boleh menyahkodnya tanpa kata laluan atau kunci.
Cara menggunakan alat ini
- Taip atau tampal teks ke dalam kotak input.
- Pilih "Encode to Base64" untuk menukar teks kepada Base64, atau "Decode from Base64" untuk menukar rentetan Base64 kembali kepada teks.
- Hidupkan penukaran langsung supaya output dikemas kini secara automatik semasa menaip.
- Salin hasil menggunakan butang salin.
Alat ini membaca dan menulis teks Unicode standard, jadi huruf beraksen, simbol dan emoji dikodkan serta dinyahkod dengan betul, bukan hanya huruf Inggeris biasa.
Cara pengekodan Base64 berfungsi
Base64 menukar setiap 3 bait input (24 bit) kepada 4 aksara output (setiap satunya menyimpan 6 bit), kerana 24 dibahagi dengan 6 bersamaan 4.
- Ambil bait input dan tuliskannya dalam bentuk binari.
- Kumpulkan bit ke dalam kelompok yang mengandungi 24 bit (3 bait).
- Bahagikan setiap kelompok 24 bit kepada empat bahagian yang setiap satunya mengandungi 6 bit.
- Cari setiap nombor 6 bit (daripada 0 hingga 63) dalam abjad Base64 dan tuliskan aksara yang sepadan.
Jika panjang input bukan gandaan 3, kelompok terakhir adalah pendek. Pengekod menambah bit sifar padanya, kemudian menambah aksara = pada output supaya hasilnya tetap keluar dalam kelompok 4:
- Satu bait berbaki menghasilkan 2 aksara Base64 serta
==. - Dua bait berbaki menghasilkan 3 aksara Base64 serta satu
=.
Contoh pengekodan Base64
Pengekodan perkataan "Hello":
- Nilai ASCII: 72, 101, 108, 108, 111
- Binari:
01001000 01100101 01101100 01101100 01101111 - 3 bait pertama (24 bit) dibahagikan kepada empat kumpulan 6 bit:
010010 000110 010101 101100, yang merupakan nombor 18, 6, 21, 44 โ aksaraS,G,V,s. - 2 bait yang berbaki (16 bit) dibahagikan kepada tiga kumpulan 6 bit, dengan 2 bit sifar ditambah pada penghujung:
011011 000110 111100, yang merupakan nombor 27, 6, 60 โ aksarab,G,8. - Oleh sebab 2 bait berbaki, satu
=ditambah pada penghujung. - Hasil:
SGVsbG8=
Penyahkodan membalikkan langkah-langkah ini: setiap aksara dipetakan kembali kepada nombor 6 bitnya, bit-bit digabungkan menjadi satu aliran, dan aliran itu dibaca kembali dalam bait 8 bit.
Formula panjang yang dikodkan dalam Base64
Untuk input sebanyak n bait, panjang yang dikodkan dalam aksara ialah:
encoded_length = 4 ร โn / 3โ
dengan โxโ bermaksud dibundarkan ke atas kepada nombor bulat terdekat. Formula ini menunjukkan sebab output Base64 sentiasa kira-kira satu pertiga lebih besar daripada input: 4 aksara output bagi setiap 3 bait input merupakan peningkatan sebanyak 33%.
Penggunaan Base64
- Lampiran e-mel (MIME). E-mel dibina untuk teks, jadi lampiran fail ditukar kepada Base64 sebelum dihantar, menjadikan fail yang dilampirkan kira-kira 33% lebih besar daripada yang asal.
- URI data. Imej kecil boleh dibenamkan terus dalam HTML atau CSS sebagai teks, seperti
data:image/png;base64,iVBORw0KGgo..., tanpa memerlukan permintaan fail berasingan. Cara ini paling sesuai untuk fail kecil kerana fail besar menjadikan halaman lebih berat dan tidak boleh dicache secara berasingan. - API dan JSON. JSON tidak mempunyai cara asli untuk menyimpan data binari mentah, jadi fail binari yang dihantar melalui API JSON sering dikodkan dalam Base64 terlebih dahulu.
- Pengesahan Asas HTTP. Pengepala
Authorizationmengekod nama pengguna dan kata laluan sebagai Base64, contohnyaAuthorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=. Cara ini tidak selamat dengan sendirinya; kelayakan tersebut boleh dibaca oleh sesiapa yang memintasnya, jadi Pengesahan Asas hanya patut digunakan melalui HTTPS. - Token Web JSON (JWT). Setiap satu daripada tiga bahagian JWT dikodkan dengan Base64URL, iaitu varian yang selamat ditempatkan dalam URL.
- Menyimpan data binari sebagai teks. Pangkalan data atau fail konfigurasi yang hanya menerima teks kadangkala menyimpan data binari sebagai rentetan Base64.
Base64 berbanding pengekodan lain
Base64 selamat URL menggantikan aksara standard + dan / dengan - dan _ kerana + dan / mempunyai makna khas dalam URL. Ia digunakan untuk JWT, parameter pertanyaan URL dan nama fail. Alat ini menghasilkan output Base64 standard; penukaran kepada bentuk selamat URL hanya memerlukan penggantian dua aksara tersebut.
Base32 menggunakan abjad yang terdiri daripada 32 aksara, jadi setiap aksara membawa 5 bit berbanding 6 bit. Ia menukar setiap 5 bait kepada 8 aksara, dengan lebihan sebanyak 60% (8 รท 5 = 1.6), berbanding 33% bagi Base64. Base32 dipilih apabila output perlu ditaip dengan tangan atau dibaca melalui telefon kerana ia mengelakkan huruf bercampur besar-kecil dan aksara yang mudah dikelirukan.
Perenambelasan menggunakan 16 aksara (0โ9, AโF) dan memerlukan 2 aksara bagi setiap bait, sekali gus menggandakan saiz (lebihan 100%). Ia lazim digunakan untuk memaparkan cincangan, warna dan alamat MAC, apabila kebolehbacaan lebih penting daripada saiz yang padat.
Bila Base64 tidak patut digunakan
Base64 menambah saiz dan kos CPU, jadi ia kurang sesuai untuk fail besar yang dihantar melalui rangkaian; penghantaran data binari mentah secara terus lebih kecil dan lebih pantas. Ia tidak boleh digunakan untuk menyembunyikan maklumat sensitif seperti kata laluan atau kunci API kerana penyahkodannya tidak memerlukan rahsia. Untuk menyimpan fail besar, jenis lajur binari pangkalan data atau perkhidmatan storan fail biasanya lebih baik daripada rentetan Base64 yang panjang dalam medan teks.
Kesilapan biasa
- Melangkau penukaran UTF-8. Pengekodan teks yang mengandungi huruf beraksen atau emoji tanpa menukarnya terlebih dahulu kepada bait UTF-8 boleh merosakkan output.
- Membuang pelapik. Sesetengah sistem membuang aksara
=pada penghujung. Kebanyakan penyahkod masih boleh berfungsi jika panjang rentetan dilengkapkan semula supaya menjadi gandaan 4, tetapi tidak semuanya menerimanya, jadi pelapik lebih selamat dikekalkan. - Pemisah baris yang tertinggal. Pengekod berasaskan MIME yang lebih lama memasukkan pemisah baris setiap 76 aksara; kebanyakan penyahkod moden menjangkakan satu rentetan berterusan tanpa pemisah tersebut.
- Mencampuradukkan varian. Base64 standard dan Base64 selamat URL menggunakan aksara yang berbeza bagi dua kedudukan yang sama dalam abjad; penyahkodan dengan varian yang salah menghasilkan data tidak bermakna atau ralat.
Soalan lazim
Adakah Base64 sejenis penyulitan? Tidak. Ia ialah pengekodan teks boleh balik, bukannya penyulitan. Sesiapa sahaja boleh menyahkod rentetan Base64 serta-merta tanpa kata laluan. Gunakan algoritma penyulitan seperti AES jika data perlu dirahsiakan.
Mengapa Base64 menjadikan data lebih besar? Kerana satu aksara penuh digunakan untuk membawa hanya 6 bit, sedangkan satu bait mentah menyimpan 8 bit. Menukar 3 bait (24 bit) kepada 4 aksara bermakna output berukuran 4/3, atau kira-kira 33%, lebih besar daripada input.
Bolehkah Base64 mengekod imej dan fail binari lain? Ya. Apa-apa fail binari, termasuk imej, PDF dan audio, boleh dikodkan dalam Base64 dan dinyahkod kembali bait demi bait. Cara ini biasa digunakan untuk imej kecil yang dibenamkan dalam HTML atau CSS, tetapi kurang sesuai untuk fail besar.
Apakah perbezaan antara Base64 dan Base64URL?
Base64URL menukar aksara standard + dan / kepada - dan _, jadi hasilnya selamat ditempatkan dalam URL atau nama fail tanpa perlu melarikan aksara tambahan. JWT menggunakan Base64URL atas sebab ini.
Mengapa rentetan Base64 saya menghasilkan ralat "invalid" semasa dinyahkod?
Punca yang paling biasa ialah aksara yang tidak tergolong dalam abjad Base64, seperti - dan _ yang digunakan oleh varian selamat URL, atau rentetan yang panjangnya satu lebih daripada gandaan 4. Tiada rentetan Base64 yang sah mempunyai panjang tersebut. Penyahkodan juga gagal apabila bait yang dinyahkod bukan teks UTF-8 yang sah. Alat ini mengabaikan ruang dan pemisah baris dalam rentetan, dan masih menyahkod rentetan yang pelapik = pada penghujungnya telah dibuang.
Dari manakah asalnya Base64? Teknik ini bermula daripada skim awal untuk menghantar data binari melalui sistem mel yang hanya menerima teks pada 1980-an, dan diseragamkan secara rasmi sebagai sebahagian daripada MIME dalam RFC 2045 pada 1996. Spesifikasi rujukan semasa untuk Base64, Base32 dan Base16 ialah RFC 4648.