Pada class javax.crypto sudah banyak disediakan algoritma kriptografi,
sehingga kita bisa langsung memakai dan menerapkan di kode program.
Beberapa metode kriptografi yang sudah ada pada class javax.crypto
adalah metode kriptografi dengan algoritma MD5, DES, dan masih banyak
lagi.
Ehm, di postingan kali ini saya ingin mencoba menerapkan metode
algoritma kriptografi MD5 dengan memanfaatkan class javax.crypto. MD5
merupakan fungsi hash satu arah yang diciptakan oleh Ron-Rivest. MD-5
biasanya digunakan untuk mengetahui bahwa pesan yang dikirim tidak ada
perubahan sewaktu berada di jaringan. Dalam Algoritma MD-5 secara garis
besar mengambil pesan yang mempunyai panjang variabel diubah menjadi
‘sidik jari’ atau ‘intisari pesan’ yang mempunyai panjang tetap yaitu
128 bit. ‘Sidik jari’ ini tidak dapat dibalik untuk mendapatkan pesan,
dengan kata lain tidak ada orang yang dapat melihat pesan dari ‘sidik
jari’ MD-5.
Oke sekarang kita langsung menuju ke kode programnya. Langkah yang
pertama, saya membuat sebuah class yang bernama MD5Encrypt yang berguna
sebagai engine untuk melakukan enkripsi.
package com.rizky.encrypt;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
*
* @author rizkyamelia
*/
public class MD5Encrypt {
private String plainTeks;
MessageDigest messageDigest;
public MD5Encrypt(String plainTeks){
this.plainTeks = plainTeks;
}
public String encrypt(String plaintext) throws NoSuchAlgorithmException{
this.messageDigest = MessageDigest.getInstance("MD5");
System.out.println("Metode Enkripsi : " + this.getMessageDigest().getAlgorithm());
System.out.println("Provider : " + this.getMessageDigest().getProvider());
System.out.println("ToString :" + this.getMessageDigest().toString());
String input = this.getPlainTeks();
this.getMessageDigest().update(input.getBytes());
byte[] output = this.getMessageDigest().digest();
return bytesToHex(output);
}
public MessageDigest getMessageDigest() {
return messageDigest;
}
public void setMessageDigest(MessageDigest messageDigest) {
this.messageDigest = messageDigest;
}
public String getPlainTeks() {
return plainTeks;
}
public void setPlainTeks(String plainTeks) {
this.plainTeks = plainTeks;
}
public static String bytesToHex(byte[] b) {
char hexDigit[] = {'0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
StringBuffer buf = new StringBuffer();
for (int j=0; j> 4) & 0x0f]);
buf.append(hexDigit[b[j] & 0x0f]);
}
return buf.toString();
}
}
di dalam class MD5Encrypt terdapat sebuah fungsi yaitu bytesToHex, yang
berfungsi untuk mengubah data dari tipe bytes, ke bentuk Hexa.
Setelah itu , class MD5Encrypt yang sudah kita buat , akan kita coba dengan membuat fungsi main
package com.rizky.test;
import com.rizky.encrypt.MD5Encrypt;
import java.security.NoSuchAlgorithmException;
/**
*
* @author rizkyamelia
*/
public class Test {
public static void main(String[] args) throws NoSuchAlgorithmException {
String input = "banjarmasin";
MD5Encrypt mde = new MD5Encrypt(input);
System.out.println("MD5 (" + input + ") = " + mde.encrypt(input) );
}
}
jika program di eksekusi maka akan tampil output seperti di bawah ini
Metode Enkripsi : MD5
Provider : SUN version 1.6
ToString :MD5 Message Digest from SUN,
MD5 (banjarmasin) = 2A9C716F0D0ED2CD71EE3FA93DDF9719
BUILD SUCCESSFUL (total time: 2 seconds)