Enkripsi MD5 dengan Java
10:34 | Author: Unknown

Akhirnya... Mulai menulis lagi di Blog, kali ini saya akan menulis tentang, bagaimana melakukan enkripsi dengan menggunakan algoritma MD5 pada bahasa pemrograman Java. Dalam bahasa pemrograman java terdapat sebuah class yaitu javax.crypto yang dapat digunakan untuk melakukan penyandian pada suatu string.

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.wahyu.encrypt;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
*
* @author wahyusumartha
*/
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.wahyu.test;

import com.wahyu.encrypt.MD5Encrypt;
import java.security.NoSuchAlgorithmException;

/**
*
* @author wahyusumartha
*/
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)

Nah, cukup mudah bukan.. melakukan enkripsi dalam pemrograman java dengan menggunakan class javax.crypto.
temen-temen bisa eksplor lagi dengan metode algoritma kriptografi yang lainnya





Readmore...

Hmmm...Tantangan Sebenarnya Datang !
00:53 | Author: Unknown

Wow. Ga terasa rupanya udah akhir semester 6, dan Sebentar lagi bakal masuk ke semester 7. Merasa Sudah Tua dan sudah kuliah sekitar 3 tahun, di Jurusan Informatika tapi belum punya pengetahuan apa-apa di bidang yang saya geluti...
Semester 7 , sudah saatnya untuk Kerja Praktek dan mengambil Tugas Akhir. Bingung harus ngapain??? Apa yang harus dikerjakan dengan kemampuan se cetek ini....

Dan parahnyalagi, di akhir semester 6 harus disibukkan dengan Lomba-lomba IT,hehe.. Aneh saya yang ga bisa apa-apa koq diajakin ikut lomba hahaha:).. karena ngerasa diberi tantangan ya ngikut aja :D
Sekarang udah saatnya untuk mempersiapkan diri lebih baik lagi, sudah banyak waktu yang terbuang sia-sia tanpa berbuat apa-apa.
Duh gimana ya, biar bikin kita tambah semangat dan bisa mengatur waktu dengan baik. Hmmm.. Kayaknya mulai sekarang saya mesti update status saya di twitter deh buat ngeliat progress dan apa saja yang telah dikerjain..
Saatnya Berubah .. hehehe
Semangat :)


Readmore...

Koneksi Database Java dan MySQL
22:21 | Author: Unknown

Dalam membangun sebuah aplikasi yang besar tentu kita memerlukan sebuah database management System untuk mengelola data-data yang diperlukan. Salah satu database management system yang sangat terkenal adalah MySQL.

Sekarang saya akan membahas tentang bagaimana koneksi database antara bahasa pemrograman java dan MySQL. Dalam melakukan koneksi database dari java ke MySQL menggunakan JDBC, maka kita harus lebih dulu menginstall JDBC driver dan MySQL.

Jika kita menggunakan IDE, Netbeans misalnya maka biasanya JDBC sudah terinstall pada saat kita menginstall IDE tersebut.

KONEKSI DATABASE JAVA DENGAN MySQL


Kalo sudah terinstall semua, maka kita langsung menuju ke source code nya…

yang harus dilakukan pada saat melakukan koneksi database dengan bahasa pemrograman java adalah kita harus me-load atau mengaktifkan driver JDBC terlebih dahulu :



Class.forName("com.mysql.jdbc.Driver");


Setelah kita me-load driver jdbc nya koneksi ke database dapat dilakukan dengan perintah berikut :


Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/database","root","");

Parameter pertama merupakan url atau informasi database, yang meliputi jenis dbms,host, dan nama database.

Parameter kedua merupakan username, dan parameter ketiga merupakan password untuk koneksi ke database.

Untuk lebih jelas, source code yang lebih lengkap dapat dilihat di bawah ini :

MySQLConnection.java

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/**
*
* @author Wahyu Sumartha
*/
public class MySQLConnection {
private String url = "jdbc:mysql://localhost:3306/sekolah";
private String host = "localhost";
private int port = 3306;
private String username = "root";
private String password = "vertrigo";
private String database = "sekolah";
private Connection conn = null;

public MySQLConnection(){
try {
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch (InstantiationException ex) {
Logger.getLogger(MySQLConnection.class.getName()).log(Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
Logger.getLogger(MySQLConnection.class.getName()).log(Level.SEVERE, null, ex);
}
} catch (ClassNotFoundException ex) {
Logger.getLogger(MySQLConnection.class.getName()).log(Level.SEVERE, null, ex);
}
}

public Connection getConn() {
if(conn==null){
try {
conn = DriverManager.getConnection(getUrl(), getUsername(), getPassword());
} catch (SQLException ex) {
Logger.getLogger(MySQLConnection.class.getName()).log(Level.SEVERE, null, ex);
}
}
return conn;
}

public void setConn(Connection conn) {
this.conn = conn;
}

public String getDatabase() {
return database;
}

public void setDatabase(String database) {
this.database = database;
}

public String getHost() {
return host;
}

public void setHost(String host) {
this.host = host;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

public int getPort() {
return port;
}

public void setPort(int port) {
this.port = port;
}

public String getUrl() {
return url;
}

public void setUrl(String url) {
this.url = url;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

}


Fungsi Main Untuk Mencoba Koneksi

Test.java

import com.mysql.jdbc.Connection;

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author Wahyu Sumartha
*/
public class Test {

public static void main(String[] args) {
MySQLConnection msqlc = new MySQLConnection();
Connection conn = null;
msqlc.setUrl("jdbc:mysql://localhost:3306/sekolah");
msqlc.setUsername("root");
msqlc.setPassword("vertrigo");
try {
msqlc.setConn(conn);
msqlc.getConn();
System.out.println("Koneksi Berhasil");
} catch (Exception e) {
e.printStackTrace();
System.out.println("Koneksi Gagal");
}
}
}



Jika Koneksi Berhasi maka Output yang dihasilkan adalah string Koneksi Berhasil, Tetapi jika koneksi gagal maka Output nya adalah String Koneksi Gagal.

Readmore...

Block Transposition

Block Transposition merupakan salah satu algoritma kriptografi klasik. Block Transposition menggunakan metode kriptografi simetrik, yaitu metode kriptografi yang menggunakan kunci yang sama dalam proses enkripsi dan deskripsi.
Proses Enkripsi Block Transposition

Dalam melakukan enkripsi plainteks dituliskan per kolom sesuai panjang kunci dan urutannya.. misalnya Plain Teks : Aku Bukanlah Dewa Kunci : kripto kemudian Kunci diberi indeks sesuai dengan urutan alfabet

k r i p t o

2 5 1 4 6 3 Nah jika kita sudah memberikan indeks pada kunci, kemudian kita akan membuat matriks dari plainteks dengan jumlah kolom sama dengan jumlah kunci

k r i p t o

2 5 1 4 6 3

A k u B u k

a n l a h D

e w a * * *

Dari matriks yang sudah dibuat maka kita dapat menentukan chiper teks berdasarkan nomor kolom pada index setiap kunci.

Kolom 1 (Kolom i ) : ula

Kolom 2 (Kolom k) : Aae

Kolom 3 (kolom o) : kD*

Kolom 4 (kolom p) : Ba*

Kolom 5 (kolom r) : knw

Kolom 6 (kolom t) : uh*

maka chiper teks nya : ulaAaekD*Ba*knwuh*

ketika sudah paham dengan teori nya , pertanyaannya sekarang bagaimana implementasi programnya ??? hehe implementasi programnya sangat mudah, kita hanya perlu memasukkan plainteks ke dalam matriks dua dimensi, kemudian mensorting berdasarkan index kuncin ya . Untuk lebih lengkapnya di bawah ini merupakan source code Enkripsi block Transposition dengan menggunakan bahasa pemrograman java :
Source code Enkripsi Block Transposition



/*
*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.wahyu.Cryptho;

/**
*
* @author Wahyu Sumartha
*/


public class BlockTransposition {

private String key;
private String plainTeks;
private String cipherTeks = "";
private int[] integerKey;
private String tempKey;
private String tempPlainTeks;
private int baris;
private int kolom;
private String[][] matriks;
private int index = 0;
private int indexOfMin;

public void init() {
cipherTeks = "";
key = "";
plainTeks = "";
index = 0;
}
//isi matriks dengan karakter spasi

public void initMatriks() {
for (int i = 0; i < baris; i++) {
for (int j = 0; j < kolom; j++) {
matriks[i][j] = " ";
}
}
}

public String removeSpace(String var) {
String tempVar = "";
for (int i = 0; i < var.length(); i++) {
if (var.charAt(i) != ' ') {
tempVar += var.charAt(i);
}
}
return tempVar;

}

public int getIndexOfMin() {
int min = 100;
int indexMin = 0;
for (int i = 0; i < integerKey.length; i++) {
if (min > integerKey[i]) {
min = integerKey[i];
indexMin = i;
}
}
return indexMin;
}

public void setTempPlainTeks(String tempPlainTeks) {
this.tempPlainTeks = tempPlainTeks;
}

public String getTempPlainTeks() {
return tempPlainTeks;
}

public String getPlainTeks() {
plainTeks = removeSpace(getTempPlainTeks());
return plainTeks;
}

public void setTempKey(String tempKey) {
this.tempKey = tempKey;
}

public String getTempKey() {
return tempKey;
}

public String getKey() {
key = removeSpace(getTempKey());
return key;
}

public void isiMatriks() {
initMatriks();
getPlainTeks();
getKey();
kolom = getKey().length();
//menentukan jumlah baris
if (getPlainTeks().length() % getKey().length() == 0) {
baris = (getPlainTeks().length() / getKey().length());
} else if (getPlainTeks().length() % getKey().length() != 0) {
baris = (getPlainTeks().length() / getKey().length()) + 1;
}
matriks = new String[baris][kolom];
//Isi Matriks
for (int i = 0; i < baris; i++) {
for (int j = 0; j < kolom; j++) {
if (index < plainTeks.length()) {
matriks[i][j] = plainTeks.substring(index, index + 1);
index++;
} else {
matriks[i][j] = "*";
}

}
}

//cetak matriks
for (int i = 0; i < baris; i++) {
for (int j = 0; j < kolom; j++) {
System.out.print(matriks[i][j] + " ");
}
System.out.print("\n");
}
}

public String enkrip() {
integerKey = new int[key.length()];
for (int i = 0; i < key.length(); i++) {
integerKey[i] = Integer.parseInt(key.substring(i, i + 1));
System.out.print(integerKey[i] + " ");
}

System.out.println();
for (int i = 0; i < integerKey.length; i++) {
indexOfMin = getIndexOfMin();
integerKey[indexOfMin] = 100;
System.out.print(indexOfMin + " ");
for (int x = 0; x < baris; x++) {
cipherTeks += matriks[x][indexOfMin];

}
}


System.out.println("Chiper Teks : " + cipherTeks);
return cipherTeks;
}
}


Itu untuk enkripsi kalo deskripsi nya silahkan teman2 kembangkan sendiri..hehe.. Nanti kalo sempat akan saya posting deskripsi nya... OK

Readmore...

Ciptakan Bumi Menjadi Lebih Indah
02:38 | Author: Unknown




Readmore...

Hello Guys,

Now i wanna write article about Hibernate.

What is Hibernate????

Ok i will explain about hibernate, hibernate is a framework for object relational mapping that placed at layer model in MVC concept.

Hibernate is layer which connects between application and database,beside of that hibernate make available connection to database with connecting class with table.

Table mapping can be done use xml or annotation. Ok Now i will be make a simple Hibernate Application with xml as table mapping..
Ok, You must download Hibernate Library

Yup.. you already have hibernate Library in your IDE, hmmm i use Netbeans 6.5 as my Favourite IDE.
# Make New Project with netbeans .. sorry i can’t upload the picture (my internet connection is low) but i trust you can follow this step by step …
# After that we must make hibernate configuration file, in netbeans we just choose New–>Other–>Categories–>Hibernate–>Hibernate Configuration File. And then you can set your dbms that you use. (in my example i use MySQL) . this is my hibernate configuration file :





org.hibernate.dialect.MySQLDialect
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/testHibernate
root
vertrigo
true
create




Now we have done make hibernate configuration file, and then we will create PODJO class which will be mapping to table

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package org.nuxprog.model;

/**
*
* @author nuxprog
*/
public class Mahasiswa {
private long id;
private String nim;
private String nama;
private String alamat;
private String telepon;

public String getAlamat() {
return alamat;
}

public void setAlamat(String alamat) {
this.alamat = alamat;
}

public long getId() {
return id;
}

public void setId(long id) {
this.id = id;
}

public String getNama() {
return nama;
}

public void setNama(String nama) {
this.nama = nama;
}

public String getNim() {
return nim;
}

public void setNim(String nim) {
this.nim = nim;
}

public String getTelepon() {
return telepon;
}

public void setTelepon(String telepon) {
this.telepon = telepon;
}

}



Plain Old Java Object has been created, now we must create mapping file which used to mapping PODJO class to table (Mahasiswa.hbm.xml)
















after created this file, at hibernate configuration file will be automatically add this file as mapping resource.

Ok now we create file HibernateUtil, in netbeans you only choose New–>Other–>Categories–>Hibernate–>HibernateUtil.java
Class HibernateUtil.java

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package org.nuxprog.model;

import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.SessionFactory;

/**
* Hibernate Utility class with a convenient method to get Session Factory object.
*
* @author nuxprog
*/
public class HibernateUtil {
private static final SessionFactory sessionFactory;

static {
try {
// Create the SessionFactory from standard (hibernate.cfg.xml)
// config file.
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
} catch (Throwable ex) {
// Log the exception.
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}

public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}



Now we must test with make main function , in main function we can make CRUD operation from class that we make before. this is my example main function :

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package org.nuxprog.main;

import org.hibernate.Session;
import org.nuxprog.model.HibernateUtil;
import org.nuxprog.model.Mahasiswa;

/**
*
* @author nuxprog
*/
public class Main {
public static void main(String[] args) {
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
try{
Mahasiswa mhs = new Mahasiswa();
mhs.setNama("Wahyu Sumartha");
mhs.setAlamat("Yogya");
mhs.setNim("06018124");
mhs.setTelepon("0817359298");
session.save(mhs);
session.getTransaction().commit();
}catch(Exception e){
session.getTransaction().rollback();
e.printStackTrace();
}finally{
session.close();
}
}
}



Now You can check in your database… any record added??????? hehe.. it’s so simple guys, ok i feel sleepy now, i will continue with other operation like retrieve, update , and delete,,

Be patient…

hehehe
Readmore...

Getting Input From Keyboard with Java
07:30 | Author: Unknown

Hello guys.. finally i write article about java programming again.
I want to share about how to get input from keyboard in java.
Input from keyboard will be make your program become interactive, because user can input something, like name or everything.
Usually i use BufferedReader to get input from keyboard if we make program with console based.

Class BufferedReader be in package java.io.*, so we must add import java.io.* on top of your code program.
Now i wanna write an example :

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package org.wahyu.main;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
*
* @author gepenk
*/
public class GetInput {
public static void main(String[] args){
try {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String firstName = "";
String lastName = "";
System.out.println("Enter Your First Name : ");
firstName = bufferedReader.readLine();
System.out.println("Enter Your Last Name");
lastName = bufferedReader.readLine();
System.out.println("Your name is " + firstName + " " +
lastName);

} catch (IOException ex) {
Logger.getLogger(GetInput.class.getName()).log(Level.SEVERE, null, ex);
}

}
}



Output for program above is

Enter Your First Name :
wahyu
Enter Your Last Name
sumartha
Your name is wahyu sumartha


Ok now i will try to explain program above.
statement BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); means we declaration variable with BufferedReader class type.
To get input from keyboard we use method bufferedReader.readLine(); that return String value. This value will be save with String data type.
Ok guy's now .. you can try it..

Readmore...