Tech Help

Base64 bukan penyulitan: apa yang sebenarnya dilakukannya

Base64 ialah pengekodan, bukan penyulitan. Mengapa ia tidak menyembunyikan kata laluan, mengapa saiz membesar, dan cara menyahkodnya.

Jawapan ringkas

Base64 ialah pengekodan, bukan penyulitan. Ia menukar data binari kepada bentuk teks yang boleh disimpan atau dihantar oleh sistem berorientasikan teks.

Sesiapa yang mempunyai teks Base64 biasanya boleh menyahkodnya. Tiada kata laluan atau kunci rahsia diperlukan.

Jangan guna Base64 untuk melindungi kata laluan, kunci API, token akses, mesej peribadi atau rahsia lain. Ia alat perwakilan, bukan mekanisma keselamatan.

Jika rentetan kelihatan berselerak, itu tidak bermakna ia disulitkan. Base64 hanya menukar cara bait ditulis sebagai teks.

Apa yang Base64 sebenarnya lakukan?

Base64 mengekod data binari dengan set ASCII terhad: A–Z, a–z, 0–9, + dan /. Penambalan = boleh muncul supaya panjang keluaran kekal gandaan 4. Penambalan tidak sentiasa ada—input pendek mungkin guna satu atau dua =, dan sesetengah format menghilangkan.

Hello

Hello

Base64

SGVsbG8=

Nyahkod SGVsbG8= dan anda mendapat Hello semula. Perjalanan pergi-balik itu tidak memerlukan kunci.

  • Data asal
  • Hello
  • Kodkan Base64
  • SGVsbG8=
  • Nyahkod Base64
  • Hello
Base64 boleh diterbalikkan dengan menyahkod. Sesiapa yang ada teks biasanya boleh.

Base64 berbanding penyulitan: apa bezanya?

Base64 untuk perwakilan dan keserasian. Ia tidak menyembunyikan kandungan. Penyulitan untuk kerahsiaan dan menggunakan bahan kunci kriptografi. Menyahkod Base64 bukan menyahsulit. Sistem kunci awam juga menggunakan kunci; kata “kunci kriptografi yang sesuai”, bukan “satu rahsia dikongsi untuk setiap jenis penyulitan”. Penghashan ialah idea ketiga: cerna, bukan pengekodan yang boleh diterbalikkan.

  • Pengekodan
  • Tiada kunci rahsia
  • Boleh diterbalikkan oleh sesiapa
  • Penyulitan
  • Perlindungan kriptografi
  • Perlu kunci yang betul untuk menyahsulit
Pengekodan menukar perwakilan. Penyulitan bertujuan mengekalkan kandungan rahsia.

Tiga tugas berbeza:

Kaedah Tujuan utama Rahsia diperlukan
Base64 Mengekod data sebagai teks Tidak
Penyulitan Melindungi kerahsiaan Ya / bahan kunci
Penghashan Cerna sehala Tiada penyahsulitan

Adakah Base64 selamat?

Base64 sendiri tidak memberi kerahsiaan. Teks boleh kelihatan kabur, tetapi itu bukan ciri keselamatan. Penyahkod biasa memulihkan bait. Itu tidak bermakna “Base64 tidak selamat” sebagai teknologi. Ia pengekodan biasa. Ia bukan mekanisma keselamatan. Keselamatan bergantung pada sistem dan kawalan sekeliling.

Bolehkah saya guna Base64 untuk menyembunyikan kata laluan atau kunci API?

Tidak, bukan sebagai perlindungan. Mengekod kata laluan, kunci API, token akses atau data peribadi sebagai Base64 tidak melindunginya. Sesiapa yang mendapat rentetan terkod biasanya boleh menyahkod. Guna storan rahsia sebenar dan penyulitan apabila kerahsiaan penting.

Mengapa Base64 digunakan jika ia bukan penyulitan?

Sistem yang menjangkakan teks sering tidak dapat membawa binari mentah. Base64 digunakan untuk mewakili binari dalam format teks, membenam sumber binari kecil, memindahkan bait melalui saluran teks sahaja, membina Data URL, muncul dalam sesetengah konteks e-mel/MIME, dan mengisi muatan API apabila skema meminta Base64. API tidak guna Base64 “untuk keselamatan”. Mereka gunakannya untuk keserasian.

Mengapa Base64 menjadikan data lebih besar?

Base64 terpad piawai memetakan 3 bait input kepada 4 aksara. Panjangnya 4 × ceil(n / 3), n ialah bilangan bait input. Tiga bait menjadi 4 aksara; enam menjadi 8. Itu kira-kira 33% lebih besar—lebih kurang sepertiga—untuk muatan mentah besar. Input kecil boleh kelihatan berbeza kerana penambalan: satu bait menjadi QQ== (4 aksara). Tanda petik JSON, awalan Data URL, mampatan atau pengekodan pengangkutan tambahan boleh mengubah saiz tersimpan atau dihantar. Base64 tidak memampatkan data.

Apakah Base64URL?

Base64URL ialah varian selamat URL dan nama fail bagi pengekodan yang sama—bukan penyulitan. + menjadi -, / menjadi _, dan penambalan sering ditinggalkan. Encode Base64 boleh mengekod dan menyahkod Base64 piawai serta Base64URL. Peraturan penambalan bergantung pada spesifikasi. Alat ini bukan penyahkod JWT.

Bolehkah Base64 mengekod imej dan fail?

Ya. Imej, PDF dan fail binari lain boleh dijadikan perwakilan teks Base64. Base64 tidak memampatkan fail itu. Teks terkod biasanya lebih besar daripada bait mentah.

Apakah Data URL Base64?

Data URL boleh menampung jenis media, penanda pengekodan dan bait terkod dalam satu rentetan:

data:image/png;base64,...

Mudah untuk aset kecil. Memasukkan fail besar ke Data URL tidak selalu idea baik: rentetan memanjang dan halaman boleh menjadi lebih perlahan. Anggap sebagai kompromi, bukan lalai.

Pengekodan berbanding penyulitan berbanding penghashan

Pengekodan (termasuk Base64) untuk perwakilan dan boleh diterbalikkan tanpa rahsia. Penyulitan untuk kerahsiaan dan melibatkan bahan kunci kriptografi. Penghashan menghasilkan cerna yang umumnya direka sehala. Panjang keluaran bergantung pada algoritma—SHA-256 dan SHA-512 tidak sama saiz. Jana hash boleh menunjukkan cerna itu; ia tidak menyulit atau menggantikan Base64.

Kesilapan Base64 yang biasa

Menganggap Base64 sebagai penyulitan
Ia hanya menukar rupa bait sebagai teks.

Menyimpan rahsia sebagai Base64 biasa
Nilai terkod boleh dinyahkod oleh sesiapa yang memilikinya.

Mengandaikan Base64 memampatkan data
Tidak. Bentuk teks biasanya lebih besar.

Terlupa kenaikan saiz
Rancang kira-kira sepertiga lebih pada muatan mentah besar.

Mengelirukan Base64 dengan Base64URL
Abjad berbeza. Penyahkod boleh menolak varian yang salah.

Menyahkod dengan pengekodan aksara yang salah
Base64 memulihkan bait. Teks masih memerlukan pengekodan yang sepadan, biasanya UTF-8.

Mengandaikan = sentiasa muncul
Penambalan digunakan apabila perlu. Sesetengah rentetan tiada.

Mengapa teks Unicode boleh menimbulkan masalah dengan Base64?

Base64 beroperasi pada bait, bukan aksara. Teks mesti dijadikan bait dahulu—biasanya UTF-8. Korea, Jepun, Arab dan emoji memerlukan langkah itu. btoa() pelayar pada rentetan Unicode boleh gagal. Encode Base64 mengekod bait UTF-8, jadi teks itu pergi-balik. Jika anda nyahkod dengan set aksara salah, Base64 boleh sah tetapi huruf masih kelihatan salah.

Bukan kunci gembok

Base64 tidak memberi kerahsiaan. Sesiapa yang ada nilai terkod biasanya boleh menyahkod. Jangan anggap teks yang kelihatan berselerak sebagai rahsia terlindung.

Kodkan atau nyahkod Base64 dalam pelayar

NEXNARA Encode Base64 menukar teks UTF-8 dan fail secara setempat.

Anda boleh mengekod atau menyahkod Base64 piawai dan Base64URL, menukar fail kepada Base64 mentah atau Data URL, dan mengembalikan Base64 atau Data URL kepada muat turun. Input tidak sah ditolak, bukan meranapkan. Ruang diabaikan; penambalan yang hilang dilengkapkan.

Fail melebihi 10 MB mungkin melambatkan tab. Fail melebihi 32 MB tidak diproses dalam pelayar.

Pemprosesan Base64 sendiri berlaku dalam pelayar anda. Teks atau fail tidak dihantar ke pelayan NEXNARA untuk alat ini. Iklan dan ciri laman lain masih menggunakan rangkaian; itu berasingan daripada pemprosesan.

Perlu mengekod atau menyahkod Base64? Buka Encode Base64 lalu tampal teks atau letak fail.

FAQ

Adakah Base64 penyulitan?

Tidak. Base64 ialah pengekodan. Ia menukar perwakilan. Ia tidak melindungi kerahsiaan.

Adakah Base64 selamat?

Base64 bukan mekanisma keselamatan. Ia pengekodan biasa. Sesiapa yang ada teks biasanya boleh menyahkod. Keselamatan bergantung pada bahagian lain sistem.

Bolehkah Base64 dinyahkod tanpa kata laluan?

Ya. Penyahkod piawai mencukupi. Base64 sendiri tidak memerlukan kata laluan atau kunci rahsia.

Mengapa Base64 menambah saiz fail?

Setiap 3 bait menjadi 4 aksara dalam Base64 terpad piawai (panjang 4 × ceil(n / 3)). Itu kira-kira 33% lebih untuk muatan mentah besar. Penambalan boleh mengubah nisbah pada input sangat kecil.

Apa beza Base64 dan Base64URL?

Base64URL menggunakan - dan _ menggantikan + dan /, dan sering menggugurkan penambalan =. Kedua-duanya pengekodan. Encode Base64 menyokong kedua-dua abjad.

Bolehkah Base64 mengekod imej dan fail?

Ya. Hasilnya teks, bukan fail yang lebih kecil. Guna mod Fail dalam Encode Base64 untuk Base64 mentah atau Data URL. Fail kekal dalam pelayar.