eja

enkripsi di php

by eja on May.16, 2009, under Belajar Yuuuk

Enkripsi merupakan proses mengkodekan data sehingga maknanya menjadi tidak jelas/sulit dibaca. Enkripsi juga dapat diartikan mengubah sebuah kata atau kalimat menjadi sandi/kode-kode tertentu dengan menggunakan algoritma tertentu pula. Tujuan dari enkripsi adalah meningkatkan dan menjaga keamanan data baik yang disimpan maupun yang dikirim.

PHP menyediakan beberapa fungsi untuk enkripsi data, antara lain : md5(), crypt(), sha1(), dan base64_encode(). Berikut penjelasan singkatnya :

1. md5()

Fungsi ini menggunakan algoritma Message-Digest yang akan menghasilkan chipertext (bentuk terenkripsi dari data) dalam bentuk bilangan heksadesimal 32 karakter. Jika anda menambahkan nilai true pada parameter raw_output maka akan menghasilkan chipertext dalam format binary dengan panjang 16 karakter. Perhatikan cara berikut yang akan meng-enkripsi string dan menambahkan parameter true :

<?

$str="pascal";
echo md5($str);
//hasil : 57c2877c1d84c4b49f3289657deca65c
echo "";
echo md5($str,true);
//hasil : W‡|„Ä´Ÿ2‰e}ì¦\
?>

Fungsi ini bersifat one way hash atau tidak dapat di-dekripsi.

2. sha1()

Fungsi ini memberikan hasil hash dalam bentuk heksadesimal dengan panjang karakter sebanyak 40. Dan akan mengembalikan hasil dengan panjang 20 karakter dalam bentuk binary apabila diberi nilai true pada parameter-nya.

Contohnya sebagai berikut :

<?

$str="pascal";
echo sha1($str);
//hasil : de9b8d32d21ac4abee992cab0591365746b5103f
echo "
";
echo sha1($str,true);
//hasil : Þ›�2ÒÄ«î™,«‘6WFµ?
?>

3. crypt()

Fungsi ini akan menghasilkan hash dengan berbasis pada algoritma DES (Data Encryption Standard). String yang di-enkripsi dengan fungsi ini akan menghasilkan chipertext yang dibuat secara random, dengan kata lain meskipun string yang di-enkripsi sama namun akan menghasilkan chipertext yang berbeda. Dengan menyertakan parameter string salt maka hasil chipertext akan mengikuti nilai salt-nya. Contoh lebih jelasnya, sebagai berikut :

<?

$str="pascal";
//enkripsi DENGAN menyertakan nilai salt-nya "wongjowo"
echo crypt($str,"wongjowo");
//hasil : wobUKw4JGvDRs
echo "";
echo crypt($str,"wongjowo");
//hasil : wobUKw4JGvDRs
echo "";
//enkripsi TANPA menyertakan nilai salt-nya
echo crypt($str);
//hasil : $1$X3..U35.$QOrVmzc/Rr/yehKSEOnH21
echo "";
echo crypt($str);
//hasil : $1$NM1.SP3.$O5aGsduc.srFkD9EHLGLL.
?>

4. base64_encode

Fungsi ini menghasilkan chipertext yang dapat di-dekripsi sehingga dapat kembali menghasilkan plaintext (bentuk awal dari string/pesan). Salah satu web-tools yang menggunakan fungsi enkripsi ini adalah AuraCMS. Berikut contoh skrip-nya :

<?

$str="pascal";
echo base64_encode($str);
//hasil : cGFzY2Fs
echo "";
//string dalam tanda petik adalah chipertext dari sting "pascal"
echo base64_decode("cGFzY2Fs");
//hasil : pascal
?>

Menarik untuk diketahui, AuraCMS menggunakan session yang terdiri dari 3 string yang digabung dan kemudian di-enkripsi dengan base64_encode.

Ketiga string tersebut adalah user, email, password. Ketika seorang webadministrator melakukan login untuk masuk ke halaman administrasi web, maka ketiga string tersebut akan digabung (dimasukkan kedalam satu buah variabel dengan nama info) dan di-enkripsi (dengan base64_encode) kemudian disimpan di folder tmp atau folder yang ditentukan khusus untuk menyimpan file session (terletak di webserver).

Andai saja seseorang mampu mengambil file session dan mendapatkan isinya. Tentu saja dengan mudah ia dapat mengetahui username dan password, caranya :

–isi dari file session :
info|s:56:”YWRtaW46cml6a3lzdW5hcnlvQHlhaG9vLmNvbTpNakEwTVRNd01UY3k=”;
–proses dekripsi :
$str="YWRtaW46cml6a3lzdW5hcnlvQHlhaG9vLmNvbTpNakEwTVRNd01UY3k=";
echo base64_decode($str);
//hasil : admin:rizkysunaryo@yahoo.com:MjA0MTMwMTcy
echo "
";
//ambil string yang masih dalam bentuk chipertext
echo base64_decode("MjA0MTMwMTcy");
//hasil : 204130172
?>

Jreng…ternyata username-nya adalah admin dan password-nya adalah 204130172. Tinggal ketik alamat www.xxx.sch.id/?pilih=admin—terbukalah halaman login untuk webadministrator masukkan username dan passwordnya, satu langkah lagi klik Login dan……….jrengg2!! Selamat Datang di Halaman Administrasi….dan selanjutnya terserah anda.

Mungkin, bagi saya mendapatkan file-session adalah hal yang mustahil karena saya sama sekali tidak mengerti tentang hacking atau sejenisnya, tapi bagi Anda yang bertitle hacker atau cracker mendapatkan file tersebut adalah hal yang mungkin bisa anda lakukan, atau mungkin anda memiliki cara tersendiri untuk masuk kedalam halaman webadministrator?????….

Yang jelas saya bingung, kenapa pembuat AuraCMS meng-enkripsi string password dengan base64_encode, tidak dengan fungsi yang lain yang tidak ‘mempan’ di-dekripsi…?? tell me, why...??

No comments for this entry yet...

Leave a Reply