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.
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.
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
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.
sumber : http://www.nova13.com/2012/11/aplikasi-chat-java-dengan-kriptografi.html






No comments:
Post a Comment