Deskripsi Pemrograman Java

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)