Tuesday 23 July 2013

Oke kawan, setelah kita memahami konsep enkripsi dan dekripsi menggunakan Vigenere maka saatnya kita menginplementasikannya kedalam sebuah bahasa pemrograman, dalam episode ini ane akan mengimplementasikannya ke bahasa Java.

Oke tanpa basa-basi lagi buatlah sebuah project di netbeans kesayangan kawan-kawan. Berikut struktural projectnya.



Setelah membuat project maka langkah selanjutnya buat sebuah class untuk menampung proses enkripsi dan dekripsinya. Dalam hal ini ane berinama EnkripDekrip.java.

Berikut sourcecodenya :
package vigenere;

import java.util.ArrayList;

/**
 *
 * @author Administrator 
 */
public class EnkripDekrip {

    private int chiper;
    private int pesan;
    private String hasil = "";

    public int getEnkrip(int pesan, int kunci, String dataHuruf) {

        int c = pesan + kunci;

        if (c < dataHuruf.length()) {
            chiper = c;
        } else {
            chiper = c - dataHuruf.length();
        }

        return chiper;
    }

    public int getDekrip(int chiper, int kunci, String dataHuruf) {
        int p = chiper - kunci;
        if (p >= 0) {
            pesan = p;
        } else {
            pesan = p + dataHuruf.length();
        }
        return pesan;
    }

    public String getHasil(ArrayList intEnkrip, String dataHuruf) {

        for (int i = 0; i < intEnkrip.size(); i++) {
            int a = Integer.parseInt(intEnkrip.get(i).toString());
            char z = dataHuruf.charAt(a);
            hasil += z;
        }

        return hasil;
    }
}

Selanjutnya buat class Scanner.java.
package vigenere;

import java.util.ArrayList;

/**
 *
 * @author Administrator
 */
public class Scanner {
    
    private int dataPesanInt;
    private int dataKunciInt;
    private ArrayList listPesan = new ArrayList();
    private ArrayList listKunci = new ArrayList();
    
    public ArrayList scannPesan(String pesan, String dataHuruf) {
        for (int i = 0; i < pesan.length(); i++) {
            for (int j = 0; j < dataHuruf.length(); j++) {
                
                char p = pesan.charAt(i);
                char dh = dataHuruf.charAt(j);
                
                if (p == dh) {
                    dataPesanInt = dataHuruf.indexOf(dh);
                    listPesan.add(dataPesanInt);
                }
            }
        }
        
        return listPesan;
    }
    
    public ArrayList scannKuci(String pesan, String kunci, String dataHuruf) {
        
        int jmlKunci = 0;
        while (kunci.length() < pesan.length()) {
            kunci += kunci.charAt(jmlKunci);
            jmlKunci++;
        }
        
        for (int i = 0; i < kunci.length(); i++) {
            for (int j = 0; j < dataHuruf.length(); j++) {
                char k = kunci.charAt(i);
                char dh = dataHuruf.charAt(j);
                
                if (k == dh) {
                    dataKunciInt = dataHuruf.indexOf(dh);
                    listKunci.add(dataKunciInt);
                }   
            }   
        }
        return listKunci;
    }
}

Selanjutnya kita buat class Main untuk testing program yang kita buat.
package vigenere;

import java.util.ArrayList;

/**
 *
 * @author Administrator
 */
public class Main {

    public static void main(String[] args) {

        String dataHuruf = "abcdefghijklmnopqrstuvwxyz";

        String pesan = "roni";
        String kunci = "iron";
        String chiper = "";
        
        ArrayList en = new ArrayList();
        ArrayList de = new ArrayList();

        
        Scanner s = new Scanner();
        ArrayList sP = s.scannPesan(pesan, dataHuruf);
        ArrayList sK = s.scannKuci(pesan, kunci, dataHuruf);

        System.out.println("Enkripsi");
        EnkripDekrip ed = new EnkripDekrip();
        for (int i = 0; i < pesan.length(); i++) {
            int iP = Integer.parseInt(sP.get(i).toString());
            int iK = Integer.parseInt(sK.get(i).toString());
            int gE = ed.getEnkrip(iP, iK, dataHuruf);

            en.add(gE);

        }
        System.out.println("Pesan : " + pesan);
        System.out.println("Kunci : " + kunci);
        String hEN = ed.getHasil(en, dataHuruf);
        System.out.println("Hasli Enkripsi :" + hEN);
        chiper = hEN;

        Scanner s2 = new Scanner();
        ArrayList sC = s2.scannPesan(chiper, dataHuruf);
        ArrayList sK2 = s2.scannKuci(chiper, kunci, dataHuruf);
        
        System.out.println("\nDekripsi");
        EnkripDekrip ed2 = new EnkripDekrip();
        for (int i = 0; i < pesan.length(); i++) {
            int iC = Integer.parseInt(sC.get(i).toString());
            int iK2 = Integer.parseInt(sK2.get(i).toString());
            int gDE = ed2.getDekrip(iC, iK2, dataHuruf);
            
            de.add(gDE);
        }
        System.out.println("Chiper : " + chiper);
        System.out.println("Kunci : " + kunci);
        String hDE = ed2.getHasil(de, dataHuruf);
        System.out.println("Hasli Dekripsi :" + hDE);

    }
}
Langkah terakhir jalankan program kawan-kawan.
5-26-2013 1-19-26 PM

Nah, kita telah berhasil mengimplementasikan Vegenere kedalam bahasa Java.

Doenload file latihannya disini.
Posted by Unknown On 06:22 No comments

0 comments:

Post a Comment

  • RSS
  • Delicious
  • Digg
  • Facebook
  • Twitter
  • Linkedin
  • Youtube

Recent Post

Entri Populer

Total Pageviews

Visitor



Flag Counter

    About

    Orang yang berilmu mengetahui orang yang bodoh karena dia pernah bodoh, sedangkan orang yang bodoh tidak mengetahui orang yang berilmu karena dia tidak pernah berilmu.