Pages

Sunday, August 25, 2013

Membuat Aplikasi Enkripsi Sederhana Menggunakan Java

encryption image

Pada postingan kali ini saya akan membuat aplikasi enkripsi sederhana menggunakan bahasa pemrograman java. Berawal dari pernyataan "jika suatu nilai diberikan operasi XOR terhadap nilai yang sama sebanyak dua kali, maka nilai tersebut akan kembali ke bentuk nilai awal", jadi operasi XOR pertama merupakan proses enkripsi dan operasi XOR kedua adalah proses dekripsinya. Oke langsung saja, dibawah ini adalah source codenya.
import java.io.*;

public class StreamEncrypt{
private BufferedReader br;
private File files;
private FileInputStream baca;
private FileOutputStream tulis;
private byte[] temp, dataIn;

public StreamEncrypt(){
}

private void init() throws IOException{
 temp = new byte[(int)files.length()];
 dataIn = new byte[(int)files.length()];

 this.readFile();
 
 return;
}

private String getInput() throws IOException{
br = new BufferedReader(new InputStreamReader(System.in));
 
 return br.readLine();
}

private boolean checkFile(File file){
 return ((file.exists()) & (file.isFile()));
}
  
private void readFile() throws IOException{
baca = new FileInputStream(files);
int i, j = 0, k = 0;

 System.out.print("reading "+ File.separator + files.getName()+ "...");
 if(files.canRead()){
  while((i = baca.read()) != -1){
   temp[j++] = (byte) i;
   dataIn[k++] = (byte) i;
  }
  baca.close();
  System.out.print("done\n");
  
  this.exe();
  return;
 }
 
 return;
}

private void writeFile(byte[] dataOut) throws IOException{
String fileName = files.getName();
String path = "";
File file;

 System.out.println("select location to write file "+ fileName +" on:");
 path = this.getInput() + File.separator + fileName;
 file = new File(path);
 if(file.createNewFile()){
  if(this.checkFile(file)){
   if(file.canWrite()){
    tulis = new FileOutputStream(file);
    System.out.print("writing "+ File.separator + fileName +"...");
    tulis.write(dataOut);
    tulis.close();
    if(files.delete()) System.out.print("done\n");
    return;
   }
  }
 }
 return;
}

public void exe() throws IOException{

 System.out.print("Encrypting...");

 Crypt cr = new Crypt(temp);
 
 System.out.print("done\n");

 this.writeFile(cr.getResult());
 
 return;
}

public static void main(String[] args){
 StreamEncrypt se = new StreamEncrypt();
 String path = "";
 
 System.out.println("Select a file:");
 try{
  path = se.getInput();
  se.files = new File(path);
  if(se.checkFile(se.files)) se.init();
  else System.out.println(se.checkFile(se.files));
 }
 catch(IOException ie){
 }
}

class Crypt extends Thread{
byte[] data, result;

static final byte key = 69;

Crypt(byte[] data){
 result = new byte[(int) data.length];
 this.data = new byte[(int) data.length];
 this.data = data;
 start();
}

public void run(){
 int i = 0;
 while(i<data.length){
  result[i] = ((byte) (data[i] ^ key));
  i++;
 }
}

public byte[] getResult(){
 return result;
}

}
 
}

Simpan dengan nama (StreamEncrypt.java) kemudian compile. Sekarang saatnya untuk testing. Siapkan satu buah file untuk dijadikan korban! disini saya menggunakan file data.odt

encryption image

Untuk langkah selanjutnya biarkan gambar yang berbicara :)

encryption image

Hasil enkripsinya tampak seperti ini

encryption image

No comments:

Post a Comment

Related Posts Plugin for WordPress, Blogger...