Algoritma hash MD5

Dalam ilmu kriptografi, MD5 (Message Digest Algorithm version 5) adalah salah satu algoritma hash yang paling populer. Hash atau hashing sendiri adalah proses perubahan suatu data menjadi data lain dengan panjang tertentu, sedemikian sehingga data itu tidak dapat dipulihkan kembali. Teknik ini biasa digunakan dalam enkripsi data, misalnya untuk menyimpan password agar tidak ada yang dapat mengetahuinya meskipun dia dapat melihat hash dari password itu.

Sebenarnya istilah “enkripsi” tidaklah tepat karena jika data itu dienkripsi, pastilah ada cara untuk dekripsi untuk mendapatkan kembali data yang disembunyikan itu. Sedangkan hash, seperti disebutkan di atas, adalah proses yang irreversibel (tidak ada istilah de-hash atau un-hash). Artinya data yang sudah di-hash tidak dapat dipulihkan kembali menjadi seperti data awal. Ibaratnya, jika data dianggap sebagai kayu, maka algoritma hash adalah proses membakar kayu itu menjadi abu. Tentu saja kita tidak dapat mengubah abu itu menjadi kayu kembali.

Algoritma hash MD5 sendiri menerima input berupa data dengan panjang bebas, dan menghasilkan output heksadesimal sepanjang 32 karakter. Jadi, seberapapun panjang data input, output yang dihasilkan akan selalu sepanjang 32 karakter. Perubahan sedikit saja di input akan mengubah output dengan drastis. Sebagai contoh:

Input: Test
Output: 0cbc6611f5540bd0809a388dc95a615b

Misalkan kita ubah input dengan huruf kecil:

Input: test
Output: 098f6bcd4621d373cade4e832627b4f6

Terlihat bahwa perubahan input sedikit saja akan mengubah output secara keseluruhan. Karena sifat ini, algoritma ini sering dimanfaatkan untuk mengecek integritas atau keutuhan suatu data. Mungkin saat kita hendak men-download file-file besar sering juga disertai “MD5 checksum” dari file itu. Ya, dengan mengecek MD5 hash dari file yang kita download, kita dapat mengetahui apakah file yang kita peroleh sempurna atau rusak, karena kerusakan paling kecil saja akan mengubah MD5 checksum dari file itu.

Manfaat lainnya adalah dalam penyimpanan password. Seperti disebutkan di awal, bahwa MD5 sudah menjadi standar de facto untuk pengamanan password. Password yang tersimpan di database adalah dalam bentuk MD5 hash-nya, sehingga meskipun seseorang bisa menerobos masuk ke database untuk mencuri password, mereka tidak dapat melihat password aslinya karena yang mereka dapatkan hanyalah hash-nya.

Namun demikian, algoritma ini bukanlah yang paling aman. Beberapa sumber menyebutkan bahwa algoritma ini dapat ditembus (walaupun tidak dengan mudah) dengan metode collision dengan rainbow table. Saya juga tidak tahu persis, yang jelas dengan cara ini seseorang dapat mencari data lain yang memiliki nilai hash yang sama. Karena itu, sekarang dikembangkan algoritma hashing baru yang disebut SHA (Secure Hash Algorithm). Namun, bagaimanapun juga, MD5 tetap yang paling banyak digunakan saat ini.