MD5 kepanjangan dari Message Digest 5, banyak digunakan untuk validasi ukuran file (checksum) yang kita download dari internet. MD5 juga banyak digunakan pada website untuk enkripsi password pengguna pada saat login, sehingga password tersebut akan lebih susah untuk dibaca. Keuntungan menggunakan MD5 Hash adalah berapapun panjang karakter yang ingin kita enkripsi, panjang MD5 Hash-nya selalu sama. Kemudian perbedaan satu karakter pada String yang ingin kita enkripsi akan menghasilkan MD5 yang benar-benar berbeda. Hal itulah yang membuat MD5 banyak digunakan sampai sekarang.
MD5 Hashing pada Java
Jika pada PHP, menggunakan fungsi MD5 sangat mudah, kita tinggal memanggil fungsi md5(), dengan memasukkan parameter inputan berupa String yang mau kita enkripsi. Sedangkan pada Java, kita akan menggunakan kelas MessageDigest dari java.security.MessageDigest untuk bisa mengenkripsi String menggunakan teknik MD5 Hashing. Berikut adalah source code-nya :
File Main.java
package md5.test; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author Herdi Naufal */ public class Main { public static String md5Java(String message) { String digest = null ; try { MessageDigest md = MessageDigest.getInstance( "MD5" ); byte [] hash = md.digest(message.getBytes( "UTF-8" )); //merubah byte array ke dalam String Hexadecimal StringBuilder sb = new StringBuilder( 2 *hash.length); for ( byte b : hash) { sb.append(String.format( "%02x" , b& 0xff )); } digest = sb.toString(); } catch (UnsupportedEncodingException ex) { Logger.getLogger(Main. class .getName()).log(Level.SEVERE, null , ex); } catch (NoSuchAlgorithmException ex) { Logger.getLogger(Main. class .getName()).log(Level.SEVERE, null , ex); } return digest; } public static void main(String[] args) { String original = "TWOH's Enginnering" ; String encrypt = md5Java(original); System.out.println( "Kalimat original : " +original); System.out.println( "MD5 Hashing : " +encrypt); } } |
Intinya adalah kita pertama-tama merubah String ke dalam byte array, setelah itu kita merubah kembali byte array tersebut ke dalam hexadecimal MD5 String. Inilah output dari program di atas :
run:
Kalimat original : TWOH's Enginnering
MD5 Hashing : 86b09a5b5734d1342317bbb50426ec7b
BUILD SUCCESSFUL (total time: 1 second)