Jumat, 09 Oktober 2015

Tehnik Enkripsi pada PHP

Tehnik Enkripsi Data Pada PHP

Enkripsi, apa itu enkripsi? Menurut wikipedia, enkripsi adalah proses mengamankan suatu informasi dengan membuat informasi tersebut tidak dapat dibaca tanpa bantuan pengetahuan khusus. Jika kita mengenal enkripsi, maka kita juga harus tahu tentang dekripsi. Dekripsi adalah proses pengembalian suatu informasi yang telah dienkripsi menjadi seperti semula.

Fungsi Enkripsi dan Dekripsi.

Enkripsi data berfungsi untuk menjaga kerahasiaan suatu data agar tidak mudah dibaca (informasi yang ada pada data tersebut) oleh orang lain. Sedangkan dekripsi berfungsi untuk menerjemahkan data yang sudah terdenkripsi tersebut agar menjadi seperti semula.

Seandainya kita ingin mengirimkan suatu data yang dirasa rahasia dan kita tidak ingin orang lain kecuali penerima dapat membaca data yang kita kirimkan. Maka solusinya adalah dengan mengenkripsi data tersebut dan penerima harus memiliki perangkat untuk mendekripsi (menerjemahkan) data yang kita kirim.

Tehnik Enkripsi

Ada beberapa tehnik enkripsi, mulai dari tehnik klasik yaitu subtitusi dan transposisi sampai tehnik modern.

Ada banyak pilihan untuk meng-enkripsi data. Karena pastinya, disetiap bahasa pemrograman terdapat sebuah cara untuk mengenkripsi data. Entah dengan memanggil fungsi yang tersedia untuk mengenkripsi data ataupun membuat sebuah fungsi sendiri untuk mengenkripsi data tersebut.

Dalam contoh kasus, enkripsi data digunakan sebagai password. Artinya, kita menggunakan satu atau beberapa huruf sebagai keyword untuk mengenkripsi data. Dan data tersebut ketika di dekripsi, kita harus memasukkan keyword yang sama dengan keyword saat mengenkripsi agar data kembali seperti semula. Jika keyword pada saat dekripsi berbeda dengan keyword pada saat enkripsi, maka file tidak akan kembali seperti semula. Hasilnya, file tersebut tidak akan bisa dibaca atau rusak. Ini merupakan salah satu penerapan enkripsi dengan algoritma symmetric key.

Pada bahasa pemrograman php, sudah tersedia beberapa fungsi untuk mengenkripsi data. Yaitu dengan fungsi base64_encode() untuk enkripsi dan base64_decode() untuk dekripsi.

Penggunaanya cukup mudah, cukup masukkan string atau variabel yang benilai string pada fungsi tersebut. Contohnya, base64_encode("tahu"), maka string "tahu" (tanpa tanda petik) akan dienkripsi sesuai dengan metode dan algoritma enkripsi base64. Begitu pula cara yang digunakan untuk mengembalikan sebuah string yang sudah dienkripsi, yaitu base64_decode("stringYangDienkripsi").

Selain base64, tersedia juga fungsi md5() pada php.  Akan tetapi, bedanya fungsi md5() hanya bisa digunakan untuk mengenkripsi data saja. jadi data yang sudah dienkripsi tidak bisa kita kembalikan seperti semula. Berbeda dengan fungsi base64 yang bisa kita gunakan untuk mengenkripsi atau dari yang sudah terenkripsi kita kembalikan seperti semula. Fungsi md5() cocok digunakan untuk verifikasi data, misal, password. Karena tidak ada yang tahu apa hasil dekripsi dari string yang sudah terenkripsi oleh md5().

Jika menggunakan md5(), cara untuk memastikan apakah data yang diinputkan sama adalah dengan mengenkripsi data yang diinputkan menggunakan fungsi md5() dan membandingkannya dengan data yang sudah ada pada database. Jika sama, berarti inputan tersebut benar. Akan tetapi bila salah, maka inputan yang dimasukkan salah.

Selain menggunakan fungsi yang tersedia pada php. Kita juga bisa menggunakan library php atau javascript yang diperuntukkan sebagai peng-enkripsi data.

Contoh studi kasus penggunaan enkripsi pada suatu aplikasi adalah saat login.

Sebelum login kita harus mendaftar dan pada saat mendaftar password yang kita inputkan akan dienkripsi oleh sistem. Lalu ketika login, sistem memiliki dua pilihan. Tergantung dari sang pembuat. Apakah password yang diinputkan ketika login di enkripsi dan kemudian dibandingkan dengan data yang dari database. Atau data yang dari database didekripsi dan dibandingkan dengan data yang diinputkan ketika login. Jika dua data yang dibandingkan sama, maka login berhasil. Namun bila dua data yang dibandingkan ternyata tidak sama, maka login akan gagal.

1 komentar: