Kriptografi Vigenere with Java

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.

5-26-2013 12-50-08 PM

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;

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;

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;

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.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s