Enkripsi MD5

Enkripsi MD5 dan pengujian integritas data

MD5 adalah …. (pengertian MD5)

Dalam Kriptografi (ilmu dan seni untuk menjaga kerahasiaan berita), MD5 yang merupakan singkatan dari Message-Digest algortihm 5, adalah fungsi hash (prosedur terdefinisi atau fungsi matematika yang mengubah variabel dari suatu data yang berukuran besar menjadi lebih sederhana) kriptografik yang digunakan secara luas dengan hash value 128-bit. MD5 dimanfaatkan dalam berbagai aplikasi keamanan, dan umumnya digunakan untuk meguji integritas sebuah file.

Algoritma MD5Hash-hash MD5 sepanjang 128-bit (16-byte), yang dikenal juga sebagai ringkasan pesan, secara tipikal ditampilkan dalam bilangan heksadesimal 32-digit. Berikut ini merupakan contoh pesan ASCII sepanjang 43-byte sebagai masukan dan hash MD5 terkait:

MD5(“The quick brown fox jumps over the lazy dog”) = 9e107d9d372bb6826bd81d3542a419d6

Bahkan perubahan yang kecil pada pesan akan (dengan probabilitas lebih) menghasilkan hash yang benar-benar berbeda, misalnya pada kata “dog”, huruf d diganti menjadi c:

MD5(“The quick brown fox jumps over the lazy cog”) = 1055d3e698d289f2af8663725127bd4b

Hash dari panjang-nol ialah:

MD5(“”) = d41d8cd98f00b204e9800998ecf8427e

Sajian lengkap mengenai algoritma enkripsi MD5 dapat Anda simak di sinihttp://id.wikipedia.org/wiki/MD5

sumber : id.wikipedia.org

MD5 Tool (MD5 Converter)

Untuk melakukan konversi secara instan, telah banyak disediakan tool-tool di internet baik berupa aplikasi dekstop, maupun aplikasi berbasis web, untuk melakukan konversi dari plain (teks terang) ke enkripsi MD5 maupun sebaliknya (atau lebih dikenal dengan istilah MD5 Reverse). Seperti halnya dari situs http://md5.gromweb.com dan beberapa situs serupa.

MD5 Checksum

MD5 Checksum Verifier SoftwareSedangkan untuk aplikasi pengujian integritas sebuah file atau lebih dikenal dengan istilah MD5 Checksum, dapat menggunakan aplikasi desktop atau aplikasi berbasis web MD5 Checksum seperti“MD5 Checksum Verifier”(dapat diunduh di sini) dan sebagainya. Software semacam ini akan menghasilkan kode MD5 dari file yang diuji integritasnya. Selanjutnya kode MD5 ini akan digunakan untuk menguji apakah file tersebut memiliki integritas ataukah tidak. Artinya jika file akan diberikan atau dikirimkan atau diunduh, si penerima dapat mencocokkan dengan yang diterima apakah ukuran, struktur, dan jenis file sesuai dengan yang diberikan oleh si pembuat file. Contohnya jika Anda men-download sebuah file, kemudian diberikan juga kode MD5 Checksum-nya, jika diperiksa (divalidasi) dengan tool seperti MD5 Checksum Verifier, dinyatakan valid atau sama dengan file yang diuji, maka dikatakan file tersebut tak mengalami perubahan dari pengirim hingga ke tangan Anda. (perubahan bisa terjadi karena virus dan sebagainya)

Pengujian semacam ini ditujukan untuk memastikan suatu file tidak disisipi atau corrupt (hilangnya sebagian) atau mungkin terinveksi, baik itu karena virus, malware, atau injeksi software berbahaya lainnya.

ENKRIPSI MD5 DENGAN JAVA

\Enkripsi MD5 ini hanya untuk text aja, kalau untuk file silahkan kembangkan lagi dengan class FileInputStream dan StringBuilder… Java juga mendukung banyak jenis enkripsi pada kelasMesageDiggest dengan method getInstance(); . Soo silahkan coba – coba untuk membuat enkripsi yang lain. Suatu saat mungkin anda membutuhkan class yang telah anda buat.

Okeh ini sourcenya :

01 import java.security.MessageDigest;
02 import java.security.NoSuchAlgorithmException;
03
04 /**
05  *
06  * @author Lalu Erfandi Maula Yusnu
07  */
08 public class ConverterUtil {
09
10     /**
11      * This nethod is used for encrypt String to MD5
12      * @param text String
13      * @return String
14      */
15     public static String MD5(String text){
16         String output       = null;
17         try {
18             MessageDigest dg = MessageDigest.getInstance("MD5");
19             dg.reset();
20             dg.update(stringToBytes(text));
21             byte[] hasher   = new byte[32];
22             hasher          = dg.digest();
23             return bytesToHexString(hasher);
24         catch (NoSuchAlgorithmException e) {
25             System.out.println("There is No MessageDigest Instance of MD5");
26             System.exit(1);
27         }
28
29         return output;
30     }
31
32     /**
33      * This method used for converting byte array to hex string
34      *
35      * @param hasher byte[]
36      * @return String
37      */
38     public static String bytesToHexString(byte[] hasher){
39         String HEXES        =  "0123456789abcdef";
40         StringBuilder hex   =  new StringBuilder( 2 * hasher.length );
41         for final byte b : hasher ) {
42             hex.append(HEXES.charAt((b & 0xF0) >> 4))
43             .append(HEXES.charAt((b & 0x0F)));
44         }
45         return hex.toString();
46     }
47
48     /**
49      * This method used for converting byte array to string
50      * @param hasher byte[]
51      * @return String
52      */
53     public static String bytesToString(byte[] hasher){
54         String hex = bytesToHexString(hasher);
55         return hexToString(hex);
56     }
57
58     /**
59      * This method used for converting string to bytes
60      * @param str String
61      * @return byte[]
62      */
63     public static byte[] stringToBytes(String str){
64         int len = str.length();
65         byte[] out = new byte[len];
66         for (int i=0; i<len; i++) out[i] = (byte) ( str.charAt(i) & 0xFF);
67         return out;
68     }
69
70
71     /**
72      * This method used for converting hex to string
73      * @param hexString String
74      * @return String
75      */
76     public static String hexToString(String hexString){
77         StringBuilder sb = new StringBuilder();
78         for(int i=0; i<hexString.length()-1; i+=2 ){
79             int decimal = Integer.parseInt(hexString.substring(i, (i + 2)), 16);
80             sb.append((char)decimal);
81         }
82         return sb.toString();
83     }
84
85 }

nah untuk menggunakan source ini ini sintaksnya:

1 Public class Test {
2     public static void main(String[] args){
3         String text="Ini text yang akan di enkripsi dengan MD5";
4         String md5 = ConverterUtil.MD5(text);
5         System.out.println(md5);
6     }
7 }

Hasilnya kurang lebih seperti ini :
6ddc9d6e411d0dfe769750b07d5ffb08


Amankah Password hanya dienkripsi dengan MD5?

Artikel ini saya tulis atas permintaan seorang pembaca di blog ini yaitu Mas Pramana Ajus yang dimintakan di halaman Tanya Admin didalam blog ini. Sebenarnya Enkripsi MD5, bisa dikatakan cukuplah mudah dan tanpa tutorial sekalipun setiap orang bisa membuat aplikasi yang menghasilkan enkripsi MD5, karena PHP sendiri sudah menyediakan fungsi built ini untuk MD5.

Namun pada tutorial kali ini saya ingin lebih mengedepankan masalah Security, karena kita tau MD5 tidaklah cukup mumpuni sebagai proteksi data penting, terutama password. MD5 menurut pengalaman saya relative mudah untuk di pecahkan dengan cara Dekripsi maupun dengan cara-cara algoritma lainnya. Contoh penggunaan MD5 yang biasa digunakan orang dalam mengenkripsi suatu password, kira-kira adalah seperti di bawah ini :

  1. <h2><center>Enkripsi MD5</center></h2>
  2. <center>
  3. <form method=post action=enkripsi.php />
  4. <input name=data type=text>
  5. <input name=submit type=submit value=Enkrip />
  6. </form>
  7. </center>
  8. <br>
  9. <center>
  10. <?php
  11. $data=md5($POST[data]);
  12. if ($_POST[submit]==”Enkrip”)
  13. {
  14. echo “Hasil Enkripsi dengan MD5 dari kata <i><b>’$_POST[data]'</b></i> adalah <br/>”;
  15. echo $data;
  16. }
  17. ?>

Dan jika saya menjalankan program dan memasukkan kata “Daud Edison Tarigan” untuk dienkripsi akan menghasilkan tampilan seperti ini :

  1. Hasil Enkripsi dengan MD5 dari kata ‘Daud Edison Tarigan’ adalah
  2. d41d8cd98f00b204e9800998ecf8427e

Sekilas hasil enkripsi tersebut memang sudah sangat sulit untuk dipecahkan artinya. Namun saat ini sudah banyak software yang digunakan untuk memecahkan sandi dari MD5. Selain itu ada satu teknik dasar yang cukup mudah untuk memecahkan password suatu system berbasis website yang passwordnya hanya dienkripsi dengan MD5. Bagaimana caranya? Sebenarnya mudah saja kalau kita memiliki akses kedalam database aplikasi yang mau di tuju. Sebagai contoh adalah aplikasi yang teman-teman install di PC sendiri menggunakan XAMPP. Standartnya ketika kita menginstall XAMPP, MySQL tidak dilengkapi dengan password (NO PASSWORD). Sehingga akan memudahkan orang membaca data database kita misalnya data password yang kita gunakan.

Kita misalkanlah kita membuat aplikasi yang passwordnya dienkripsi dengan MD5. Katakanlah password aslinya adalah “Daud Edison Tarigan” dimana hasil MD5 adalah “d41d8cd98f00b204e9800998ecf8427e” seperti contoh diatas. Maka didalam database kita akan menemukan Field Password berisi data “d41d8cd98f00b204e9800998ecf8427e” . Nah jika kita ingin masuk ke system, tentunya kita harus login dengan menggunakan password asli (yaitu “Daud Edison Tarigan”) bukan password hasil enkripsi MD5 (yaitu “d41d8cd98f00b204e9800998ecf8427e”). Sementara dari dalam database kita hanya menemukan password dalam bentuk sudah terenkripsi. Bagaimana cara memecahkan kode terenkripsi ini?? Kalau metode saya, tidak perlu dipecahkan cukupgantikan isi password terenkripsi tersebut dengan data tersenkripsi lainnya. Bagaimana cara menggantikannya dengan data terenkripsi lainnya??

Misalnya kita ingin merubah password tersebut menjadi password yang lain yaitu “Daud AplikasiPHP”. Maka kita hanya perlu mengenkripsi password “Daud AplikasiPHP” kedalam bentuk MD5. Kode untuk merubah enkripsi ini adalah :

  1. < ?php
  2. $password=”Daud AplikasiPHP”;
  3. $enkripsi = md5($password);
  4. echo “Hasil enkripsi dari $password adalah : “;
  5. echo $enkripsi;
  6. ?>

Jika program diatas kita jalankan, maka hasilnya akan terlihat seperti dibawah ini :

  1. Hasil enkripsi dari Daud AplikasiPHP adalah : 4eb4263ff560260e4bace23bded3419a

Nah hasil enkripsi MD5 inilah yang akan kita gunakan untuk menggantikan Password yang telah terenkripsi didatabase yang kita temukan tadi. Copy kan data terenkripsi ini dan Edit Isi Field Password didalam database sehingga data dalam field Password adalah hasil enkripsi baru ini. Dengan kata lain, sebelumnya dalam field password berisi data “d41d8cd98f00b204e9800998ecf8427e”, namun setelah kita rubah akan menjadi “4eb4263ff560260e4bace23bded3419a”, yang artinya juga bahwa password aslinya telah berubah dari “ Daud Edison Tarigan” menjadi password baru “ Daud AplikasiPHP ”. Nah anda sekarang bisa login dengan password baru dan anda sudah dapat mengendalikan system tersebut.

Nah dari penjelasan ini, anda sudah bisa membayangkan bukan bahwa MD5 tidaklah cukup aman sebagai proteksi sebuah password. Nah, bagaimana caranya agar password kita aman?? Tunggu artikel saya selanjutnya ya….

Kata Kunci : Enkripsi MD5| PHP Security

Sumber : http://aplikasiphp.com

Advertisements

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