Pages

author donycaturdermawan : donycad22@yahoo.com 2011/2012. Diberdayakan oleh Blogger.

Sabtu, 11 Oktober 2014

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 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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

Membuat Aplikasi Enskripsi dan Deskripsi Menggunakan Algoritma Chiper Substitusi Dengan Visual Basic 6.0



 Pada posting kali ini saya akan membagi sedikit ilmu pemrograman yang saya punya, saya akan menunjukan bagaimana cara membuat aplikasi kriptografi sederhana menggunakan bahasa pemrograman visual basic 6.0.
Sebelumnya akan saya jelaskan sedikit mengenai kriptografi bagi yang belum tau....

Kriptografi adalah ilmu dan seni untuk menjaga keamanan pesan yang dikirim sampai ke tujuan. 

Ilmu kriptografi dapat diklasifikasikan atas 2 bagian
  • Kriptografi klasik
  • Kriptografi modern 
Kriptografi mempunyai 2 proses :
  • Enskripsi : Proses pengacakan data menggunakan sebuah key agar tidak dapat dibaca oleh pihak lain.
  • Deskripsi : Proses mengembalikan data yang telah diacak menjadi data asli dengan sebuah key.
 Komponen kriptografi :
  • Plaintext : Data asli
  • Chipertext : Data yang telah diacak.
Berikut ini akan saya tunjukan bagaiman membuat sebuah aplikasi enskripsi dan deskripsi sederhana menggunakan salah satu algoritma substitusi chiper yang merupakan salah satu ilmu kriptografi klasik, yaitu Caesar Chiper dengan bahasa pemrograman Visual Basic 6.0.
Yang pertama, anda sebaiknya telah mengenal bahasa pemrograman visual basic, karena saya tidak akan menjelaskan secara detail mengenai bahasa pemrograman yang satu ini.

Buat disain form seperti gambar berikut, pastikan nama Text box dan command button nya sama dengan gambar, agar saat memasukkan script nantinya tidak terjadi kesalahan.



Bukalah form code dari disain diatas kemudian masukkan script berikut ini :