MySQL Talk: Password Encryption and Hashing


Di dalam ilmu Cryptography(Ilmu dan seni untuk menyembunyikan informasi), encryption adalah suatu proses transformasi informasi dengan menggunakan algoritma tertentu untuk membuat informasi tersebut menjadi tidak dapat dibaca oleh siapapun kecuali oleh mereka yang memiliki algoritma dibalik proses enkripsi tersebut. Dalam banyak konteks, proses enkripsi secara implisit mengacu pada proses kebalikannya, dekripsi(decryption), yang akan membuat informasi terenkripsi dapat dibaca kembali. Proses enkripsi selalu menghasilkan informasi yang terenkripsi dengan panjangnya tidak tentu. Berbeda dengan proses Hashing.

Secara pengertian, proses hashing adalah sama dengan proses encryption. Hanya saja proses hashing menghasilkan sebuah checksum. Checksum atau Hash sum adalah sebuah data dengan panjang selalu tetap(bergantung pada method yang digunakan) dan dihasilkan oleh sebuah prosedur checksum function atau checksum algorithm. Checksum ini tidak dapat dikembalikan ke argument aslinya. Jika dilihat dari segi keamanan, Hashing lebih menjanjikan dibanding Encryption.

Pada kesempatan kali ini saya akan mencoba menunjukkan implementasi Hashing di MySQL. Terdapat 2 method Hashing yang dapat dipakai dalam MySQL, yaitu MD5() dan SHA1(). MD5() mengkalkulasi 128-bit Checksum dan menghasilkan binary string dengan panjang 32 bilangan hexa atau NULL jika argument yang diberikan adalah NULL. Sedangkan SHA1() mengkalkulasi 160-bit Checksum dan menghasilkan binary string dengan panjang 40 bilangan hexa atau NULL jika argument yang diberikan adalah NULL.

Jika anda belum mengikuti dua tutorial dibawah ini, mohon ikuti terlebih dahulu. Kenapa? karena semua file dan database yang dibuat disana akan digunakan kembali ditutorial ini.

Jika anda sudah mengikutinya, pastikan bahwa semua data dalam database tidak ada yang berubah. Oke, mari kita mulai tutorialnya.

1. Mengubah plain password menjadi sebuah Checksum dalam database.

Compile query berikut pada SQL Compiler di http://localhost/phpmyadmin.

UPDATE `session`.`member` SET `password` = MD5( ‘secret’ ) WHERE `member`.`id` =1;

Query diatas digunakan untuk meng-update password data member dengan Checksum dari MD5 dengan nilai masukan ‘secret'(sama seperti yang aslinya).

2. Mengubah file login.php

Carilah script berikut pada file login.php anda.

if($login = mysql_query(“select * from member where username = ‘$user’ and password =  ‘$password'”)){

Jika sudah ditemukan, gantilah dengan script berikut.

if($login = mysql_query(“select * from member where username = ‘$user’ and password =  MD5(‘$password’)”)){

Terlihat jelas bahwa disana terdapat proses hashing kembali dari password yang dimasukan oleh user untuk membandingkan checksum-nya dengan checksum password yang ada pada database. Hal ini adalah satu-satunya cara yang dapat dilakukan ketika kita ingin mengetahui apakah kedua password sama atau tidak.

Jika sudah, simpanlah semua file anda dan coba login melalui http://localhost/tutorialsession/ dengan username guest dan password secret. Jika anda berhasil masuk, Selamat.. anda telah berhasil mengikuti tutorial ini.

Anda bisa mendukung saya untuk tetap melakukan update tutorial dengan cara mem-follow blog saya, atau mem-follow twitter saya disini, bisa juga dengan meninggalkan komentar dan atau me-request tutorial yang anda inginkan. Best regards, eSDhee

Advertisements

5 thoughts on “MySQL Talk: Password Encryption and Hashing

  1. hi, sy mau tanya saya membuat sebuah file login di java untuk android dan saya sambungkan dengan database mysql. pada file login.php sy menggunakan md5 jika dijalankan di emulator dengan server local xampp mau jln, tp pada saat sy jalankan di device android dan server hosting tidak mau login, apa karena fungsi md5 di java / android berbeda dengan php? bagaimana solusinya yaa? mohon bantuan nya, trmksh sebelumnya

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s