Selasa, 20 November 2012

Aplikasi Chat Java dengan Kriptografi CaesarCipher

Java File
Kembali akan saya ulas mengenai Aplikasi Chatting berbasis pemrograman Java, seperti pada postingan sebelumnya yang juga sama yaitu tentang Program chatting Java server multi client, source code dan perintah menjalankan program masih sama, namun kali ini ada sedikit ada penambahan fitur pada pesan yang dikirimkan saat kegiatan chatting, adalah tentang Kriptografi dengan menggunakan metode Caesar Cipher yang mana pesan yang dikirimkan akan digeser sebanyak key yang telah ditentukan, misal geser 3, maka huruf 'a' akan menjadi 'd', begitu juga kata yang lain, baik secara enkripsi maupun dekripsi, sebab metode ini yang paling sederhana(klasik) serta paling sering digunakan dari metode dalam kriptografi. Ini merupakan publikasi dari tugas mata kuliah Keamanan Jaringan, jadi akan lebih fokus dari sisi keamanan atau securitas suatu data, berbeda dengan postingan sebelumnya yang masih belum ada kriptografinya.

Dalam program/aplikasi ini, saya menambahkan 2 class tambahan yakni class untuk enkripsi dan juga class untuk dekripsi, dan file java yang saya modifikasi adalah file UDPServer.java yang merujuk pada artikel sebelumnya. Aplikasi chat ini juga sama terdapat 4 buah file java. Namun untuk lebih jelasnya, saya taruh file java kedalam folder/direktori yang berbeda yaitu folder server dan folder userClient. Editing source code ada pada folder server sebab file java UDPServer.java terdapat disitu serta file pesan offline juga akan muncul di folder server ini.

Sedangkan untuk arsitektur program serta cara menjalankan program chatting ini, sama persis dengan postingan sebelumnya. Disini akan saya jelaskan lebih kearah kriptografinya saja. Berikut penambahan class enkripsi untuk mengacak kata/pesan pada file UDPServer.java dan penambahan class dekripsi untuk membaca pesan/kata yang sudah dienkripsi sebelumnya.
Enkripsi Java CaesarCipher 

Dekripsi Java CaesarCipher

Kemudian supaya kedua class tersebut bisa digunakan, maka perlu disisipkan perintah baru kedalam class yang sudah ada. Dalam kasus ini, class enkripsi akan ditaruh pada class saveMessage, sedangkan class dekripsi yang berfungsi membaca pesan enkripsi akan diletakan pada class readMessage.
String hasil=enkripsi(message);
String hasil=dekripsi(message);
Untuk lebih jelasnya, ada di potongan script berikut:

Class saveMessage
public static void saveMessage(String output) throws IOException { 
String[] values = output.split(" ");
String toClient = values[1];
String fromClient = values[2];
int index = 7 + values[1].length()+ values[2].length();
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
Date date = new Date();
String message = fromClient + ": <" +dateFormat.format(date) + "> " + output.substring(index);
/* Each client get its own txt file */
String filename = toClient+".txt";
File txt = null;
BufferedWriter writer = null;
try
{
 writer = new BufferedWriter(new FileWriter(filename, true));
}
/* If file doesn't exist, create a new one */
catch (FileNotFoundException e)
{
txt = new File(filename);
writer = new BufferedWriter (new FileWriter(txt, true));   
}
String hasil=enkripsi(message);
writer.write(hasil);
writer.newLine();
writer.close();
}


Class readMessage
public static void readMessage(String client) throws IOException { 
 String filename = client+".txt";
 /* check if txt file exists, if yes, send everything in it to client and delete file */
  try 
  {
   BufferedReader in = new BufferedReader(new FileReader(filename)); 
   ArrayList < serializable > list = hm.get(client); 
   //Get the ip of current key
   InetAddress ip = (InetAddress) list.get(1);  
   //get the port of the current key
   int p = Integer.parseInt((String) list.get(2)); 
   String output = "Kamu mempunyai pesan";
   byte[] sendData  = new byte[1024];
   sendData = output.getBytes();  
   DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, ip, p); 
   try 
   {
    serverSocket.send(sendPacket);
   } 
   catch (IOException e) 
   {
    e.printStackTrace();
   } 
   String message;
   while ((message = in.readLine()) != null)
   {
    String hasil=dekripsi(message);
    sendData = hasil.getBytes();  
    sendPacket = new DatagramPacket(sendData, sendData.length, ip, p); 
    try 
    {
     serverSocket.send(sendPacket);
    } 
    catch (IOException e) 
    {
     e.printStackTrace();
    } 
   }   
   in.close();   
   File txt = new File (filename);
   txt.delete();
  
  }  
  /* If not, do nothing */
  catch (FileNotFoundException e) 
  {
   //nothing
  }
}

Sedangkan program chatting java dijalankan, misal salah satu user/client sudah off, dan ada user yang mengirimkan pesan kepada user tersebut yang sudah offline, maka pesan offline tersebut disimpan ke dalam folder server, pesan akan ditampilkan kepada user tadi apabila sudah online kembali. Pesan akan disimpan dalam bentuk file txt, jika pada postingan sebelumnya pesan akan sangat mudah dibaca orang lain, di program ini sudah dienkripsi sebab menggunakan kriptopgrafi Caesar Cipher.
Berikut pesan offline yang misalkan seorang user/client mengirimkan pesan.

Pesan offline tersebut akan disimpan oleh server di folder server, dan berikut hasil enkripsi pada file txt:

Ketikan user tadi online kembali, maka pesan akan ditampilkan yang dekripsinya, jadi pesan sesuai dengan aslinya, bukan hasil enkripsi yang tampil.

Demikian penjelasan singkat mengenai Aplikasi Chat Java dengan Kriptografi Caesar Cipher, semoga berguna.

Kelompok:
Tangguh Sanjaya (08052932)
Dodo Suratmo (08052950)
Nova Tri Cahyono (091051014)
Yuni (091051024)



emoticon Tolong dibaca terlebih dahulu !

Anda sedang membaca artikel tentang Aplikasi Chat Java dengan Kriptografi CaesarCipher dan anda bisa menemukan artikel Aplikasi Chat Java dengan Kriptografi CaesarCipher ini dengan url http://www.nova13.com/2012/11/aplikasi-chat-java-dengan-kriptografi.html, Anda boleh menyebar luaskannya atau mengcopy paste-nya jika artikel Aplikasi Chat Java dengan Kriptografi CaesarCipher ini sangat bermanfaat bagi teman-teman Anda, namun jangan lupa untuk meletakkan link postingan Aplikasi Chat Java dengan Kriptografi CaesarCipher sebagai sumbernya.

If you Like this, please share it?

Ping your blog, website, or RSS feed for Free

Related Post:



4 Comments:

  1. permisi pak, saya ada tutorial websocket di java, silahkan dioprek lebih baik lagi dan semoga bermanfaat pak, http://datacomlink.blogspot.co.id/2015/11/implementasi-server-websocket-rfc-6455.html
    semangat open source.. :D

    BalasHapus
  2. Saya tertarik dengan tulisan mengenai kriptografi diatas, sangat bermanfaat untuk tugas yang sedang saya dapatkan. saya juga memiliki referensi mengenai enkripsi yang dapat anda kunjungi http://ejournal.gunadarma.ac.id/index.php/kommit/article/view/1005/872
    Terimakasih

    BalasHapus

Pasang emoticon dibawah ini dengan mencantumkan kode di samping kanan gambar.

:a: :b: :c: :d: :e: :f: :g: :h: :i: :j:

PERHATIAN!
>> Yang berkomentar dengan Anonymous tidak akan saya tanggapi, usahakan memakai Name/URL. kalau tidak punya blog, bisa memakai URL profil Facebook, twitter, dll.
>> Gunakan anchor name pada Name/URL yang sewajarnya.

thanks.

Translates