Jawaban singkatnya
Bukan. Base64 adalah encoding: cara menuliskan data apa pun hanya dengan enam puluh empat karakter yang aman, supaya data itu selamat melewati sistem-sistem yang dibangun untuk teks polos. Ia tidak punya kunci, tidak punya rahasia, dan tidak punya sifat keamanan jenis apa pun. Mendekodekannya hanya butuh mengenalinya, tidak lebih — sekali lirik bagi manusia, satu milidetik bagi komputer.
Pertanyaannya tetap layak diajukan, karena kekeliruannya universal dan kadang mahal. Untaian base64 terlihat teracak — cGFzc3dvcmQ= tidak berkata apa-apa pada mata — dan yang terlihat teracak dimasukkan ke laci “aman”. Produk sungguhan pernah dirilis dengan kata sandi yang “dilindungi” begini. Obatnya satu pembedaan yang dipelajari sekali: encoding untuk mesin, enkripsi untuk rahasia, hash untuk sidik jari. Tiga pekerjaan, tiga alat, dan hanya satu yang melindungi apa pun.
Encoding: bisa dibalik siapa saja
Encoding mengubah cara data ditulis, tidak pernah mengubah isinya. Lampiran email, gambar yang dibenamkan di lembar gaya, token di alamat — di mana-mana byte sembarang harus melewati kanal yang hanya andal membawa teks, dan base64 adalah kostum bakunya: tiga byte masuk, empat karakter keluar, tersusun dari huruf, angka, dan dua tanda baca, dengan = mengganjal di ujung. Tanda = itulah cirinya, dan sekali Anda tahu, base64 terlihat di mana-mana.
Sifat yang menentukan segalanya: resepnya publik dan berjalan sama persis ke arah sebaliknya. Tidak ada yang perlu diketahui, jadi tidak ada yang bisa tidak diketahui. Percent-encoding di URL (%20 untuk spasi), entitas HTML (&), heksadesimal, dan escape garis miring terbalik adalah gagasan yang sama berganti baju, dan pengode dan pendekode base64 di sini bicara semuanya, dua arah, di mesin Anda sendiri. Mendekodekan untaian yang Anda temukan sama sahnya dengan membacanya, karena encoding memang tidak pernah menjadi gembok.
Enkripsi: bisa dibalik oleh pemegang kunci
Enkripsilah yang sungguh melindungi isi. Ia mengubah data dengan sebuah kunci, dan matematikanya diatur supaya membalik perubahan itu tanpa kunci bukan sekadar sulit melainkan di luar jangkauan komputasi — sementara dengan kunci, seketika. Rahasianya tinggal seluruhnya di kunci, bukan di metode: algoritmanya diterbitkan, dibakukan, dan justru karena itu kuat.
Di sinilah kekeliruan visual menggigit, karena byte terenkripsi lazim di-base64-kan supaya bisa bepergian — diacak oleh kunci, lalu diberi kostum untuk perjalanan. Dua lapisan, dua pekerjaan. JSON Web Token adalah contoh bukunya: tiga potong base64 disambung titik, dan dua potong pertamanya terdekodekan menjadi JSON terbaca bagi siapa pun yang mencoba. Tiap hari orang menempelkan token ke pendekode web publik karena mengira seluruhnya tersegel; gambaran jujurnya, JWT adalah kartu pos dengan tanda tangan antipemalsuan, bukan amplop.
Hash: tidak bisa dibalik siapa pun
Hash berjalan satu arah saja. Lewatkan data sebanyak apa pun melalui SHA-256 dan keluarlah bilangan berukuran tetap — bilangan yang sama setiap kali untuk data yang sama, bilangan yang sama sekali lain untuk data yang berbeda satu bit, dan tidak ada jalan pulang dari bilangan ke datanya, bagi siapa pun, berkunci ataupun tidak. Ia bukan kostum dan bukan gembok; ia sidik jari.
Itulah yang menjadikannya alat yang tepat untuk dua pekerjaan miliknya. Memastikan berkas unduhan persis berkas yang diterbitkan penerbitnya — bandingkan sidik jarinya, yang dikerjakan alat penghitung checksum di mesin Anda, lengkap dengan panduannya. Dan menyimpan kata sandi: layanan yang dikelola baik hanya menyimpan hash milik Anda, sehingga basis datanya yang dicuri pun tidak berisi kata sandinya. Ketika sebuah situs bisa mengirimkan lewat email kata sandi yang Anda lupa, ia baru saja memberi tahu bahwa ia tidak pernah meng-hash-nya — dan ketika sebuah config “mengamankan” kata sandinya sebagai cGFzc3dvcmQ=, ia memberi tahu bahwa ia hanya pernah meng-encode-nya.
Membedakan ketiganya di lapangan
Jalan pintas yang berhasil untuk untaian di depan Anda:
- Terdekodekan jadi sesuatu yang terbaca? Itu tadi encoding. Huruf, angka, mungkin
+dan/, sering=di ujung — lewatkan ke pendekode dan lihat. - Terdekodekan jadi derau biner? Berarti base64 hanyalah kostumnya, dan yang di baliknya terenkripsi, terkompresi, atau memang tidak pernah berupa teks — encoding tidak memberi tahu apa-apa dalam kedua hal itu.
- Panjang tetap, karakter heksadesimal, tidak pernah terdekodekan? 64 karakter heksadesimal adalah siluet SHA-256; 32 siluet MD5. Hash tidak didekodekan; ia hanya cocok atau gagal cocok.
Dan pesan praktis masing-masing: jangan pernah menyandarkan kerahasiaan pada encoding; jangan pernah membangun enkripsi sendiri kalau platform Anda sudah membawanya; jangan pernah menyimpan kata sandi selain sebagai hash. Sementara itu, untaian yang Anda dekodekan untuk memeriksa bisa jadi justru bagian yang sensitif — token yang sedang di-debug biasanya begitu — dan itulah sebabnya pendekode di sini berjalan di tempat rahasia itu sudah berada, di mesin Anda, dan sebabnya apa yang sebenarnya terjadi saat menempel ke alat web punya halamannya sendiri.