Pages

Source Code Caesar Cipher dengan Java

Caesar Cipher adalah metode yang menggunakan putaran abjad.cara mencari enkripsinya adalah dengan cara memajukan nilai putaran dari abjad yang dimasukkan.

Misalnya :
input : ABCD
putaran :  5
hasil : EFGH

Untuk penjelasan Caesar Cipher bisa dilihat pada Substitution Techniques - Caesar Cipher.

Untuk hasil program, misalnya dimasukkan codingsederhana.blogspot.com, dan dimasukkan putara sebanyak 15:



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
Karakter : C  Posisi : 2   Setelah di Putar : R  Posisi : 17
Karakter : O  Posisi : 14  Setelah di Putar : E  Posisi : 4
Karakter : D  Posisi : 3   Setelah di Putar : S  Posisi : 18
Karakter : I  Posisi : 8   Setelah di Putar : Y  Posisi : 23
Karakter : N  Posisi : 13  Setelah di Putar : D  Posisi : 3
Karakter : G  Posisi : 6   Setelah di Putar : W  Posisi : 21
Karakter : S  Posisi : 18  Setelah di Putar : I  Posisi : 8
Karakter : E  Posisi : 4   Setelah di Putar : U  Posisi : 19
Karakter : D  Posisi : 3   Setelah di Putar : S  Posisi : 18
Karakter : E  Posisi : 4   Setelah di Putar : U  Posisi : 19
Karakter : R  Posisi : 17  Setelah di Putar : H  Posisi : 7
Karakter : H  Posisi : 7   Setelah di Putar : X  Posisi : 22
Karakter : A  Posisi : 0   Setelah di Putar : P  Posisi : 15
Karakter : N  Posisi : 13  Setelah di Putar : D  Posisi : 3
Karakter : A  Posisi : 0   Setelah di Putar : P  Posisi : 15
Karakter : B  Posisi : 1   Setelah di Putar : Q  Posisi : 16
Karakter : L  Posisi : 11  Setelah di Putar : B  Posisi : 1
Karakter : O  Posisi : 14  Setelah di Putar : E  Posisi : 4
Karakter : G  Posisi : 6   Setelah di Putar : W  Posisi : 21
Karakter : S  Posisi : 18  Setelah di Putar : I  Posisi : 8
Karakter : P  Posisi : 15  Setelah di Putar : F  Posisi : 5
Karakter : O  Posisi : 14  Setelah di Putar : E  Posisi : 4
Karakter : C  Posisi : 2   Setelah di Putar : R  Posisi : 17
Karakter : O  Posisi : 14  Setelah di Putar : E  Posisi : 4
Karakter : M  Posisi : 12  Setelah di Putar : C  Posisi : 2
Hasil Akhir :[R, E, S, Y, D, W, I, U, S, U, H, X, P, D, P, Q, B, E, W, I, F, E, R, E, C]




Untuk source codenya dengan java, bisa dilihat di bawah ini :

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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import java.util.ArrayList;
import javax.swing.JOptionPane;

public class CesarCipher {

    public static void main(String[] args) {
        ArrayList<String> abjad = new ArrayList<String>();
        abjad.add("A");
        abjad.add("B");
        abjad.add("C");
        abjad.add("D");
        abjad.add("E");
        abjad.add("F");
        abjad.add("G");
        abjad.add("H");
        abjad.add("I");
        abjad.add("J");
        abjad.add("K");
        abjad.add("L");
        abjad.add("M"); 
        abjad.add("N");
        abjad.add("O");
        abjad.add("P"); 
        abjad.add("Q");
        abjad.add("R");
        abjad.add("S");
        abjad.add("U");
        abjad.add("V");
        abjad.add("W");
        abjad.add("X");
        abjad.add("Y");
        abjad.add("Z");
              
        
       String nama = JOptionPane.showInputDialog("Masukkan Nama : ");
       
       String putarans = JOptionPane.showInputDialog("Masukkan Putaran :");
       int putaran = Integer.parseInt(putarans);
       
       nama = nama.toUpperCase(); 
       
       ArrayList<Character> namaChar  = new ArrayList<Character>();

       for(int i = 0; i<nama.toCharArray().length; i++) 
       {
           namaChar.add(i, nama.charAt(i)); 
       }
       
       ArrayList<String> enkripsi = new ArrayList<String>();
       
       for(int j=0; j<namaChar.size(); j++)
       {
           for(int i = 0; i<abjad.size(); i++)
           {
               if(namaChar.get(j).toString().equals(abjad.get(i))) 
               {

                   
                   int indeksEnkripsi = i + putaran;
                   
                   if(indeksEnkripsi > 24)
                        indeksEnkripsi = indeksEnkripsi % 25;
                    
                    System.out.println("Karakter : " + abjad.get(i) + "  Posisi : " + i + "  Setelah di Putar : " + 
                                    abjad.get(indeksEnkripsi) + "  Posisi : " + indeksEnkripsi);
                    enkripsi.add(abjad.get(indeksEnkripsi));
               }
           }
       }
           System.out.println("Hasil Akhir :" + enkripsi.toString());
    }
}
 


Pada baris 7-32 ini adalah sebuah arraylist yang dibuat untuk menampung abjad awal, yaitu abjad yang sudah memiliki indeks, dan ini merupakan ketetapan. dengan membuat cara di bawah, otomatis a di indeks 0, b di indeks 1, c di indeks 2 .... dst.

ArrayList<String> abjad = new ArrayList<String>();
        abjad.add("A");
        abjad.add("B");
        abjad.add("C");
        abjad.add("D");
        abjad.add("E");
        abjad.add("F");
        abjad.add("G");
        abjad.add("H");
        abjad.add("I");
        abjad.add("J");
        abjad.add("K");
        abjad.add("L");
        abjad.add("M"); 
        abjad.add("N");
        abjad.add("O");
        abjad.add("P"); 
        abjad.add("Q");
        abjad.add("R");
        abjad.add("S");
        abjad.add("U");
        abjad.add("V");
        abjad.add("W");
        abjad.add("X");
        abjad.add("Y");
        abjad.add("Z");

Untuk baris program 35-40 berikut adalah memasukkan nama yang mau dienkripsi, kemudian putarannya. pada nama=nama.toUpperCase akkan otomatis mengubah semua huruf yang dimasukkan menjadi huruf kapital.

misalnya di input : beLaJar Java
maka akan otomatis dikonversi menjadi : BELAJAR JAVA

String nama = JOptionPane.showInputDialog("Masukkan Nama : ");
       
       String putarans = JOptionPane.showInputDialog("Masukkan Putaran :");
       int putaran = Integer.parseInt(putarans);
       
       nama = nama.toUpperCase(); 
       

Untuk baris 42-47 ini adalah memasukkan nama yang diinput kedalam array, agar bisa dibandingkan dengan array yang sudah dibuat sebelumnya yaitu abjad.

ArrayList<Character> namaChar  = new ArrayList<Character>();

       for(int i = 0; i<nama.toCharArray().length; i++) 
       {
           namaChar.add(i, nama.charAt(i)); 
       }
       



if(namaChar.get(j).toString().equals(abjad.get(i))) 
 
adalah sintak untuk membandingkan karakter yang dimasukkan dengan array abjad.


 if(indeksEnkripsi > 24)
     indeksEnkripsi = indeksEnkripsi % 25;


sintax di atas memastikan, bahwa hasil proses indeks tidak lebih besar dari 25 sehingga akan tetap sesuai dengan indeks.

Jhohannes H Purba Coding Sederhana April 05, 2012

26 comments:

  1. mantap gan,,, terbantu ne ngerjain tugas.. :D

    ReplyDelete
  2. berarti untuk dekripsi tinggal dikurangin aja ya gan?

    ReplyDelete
  3. keren keren..
    kunjngi jga http://www.zagalarupa.blogspot.com ya.. ^^

    ReplyDelete
  4. Replies
    1. Affine saya belum coba mbak, tapi kalau mbak tau prosesnya, boleh kirim ke email saya johannes_purba@yahoo.com atau jhohannespurba@gmail.com

      nanti akan saya coba buat codingnya.. :D

      Delete
  5. gan klaw untuk program eclipse gmna gan saya btuh bnget ni gan

    ReplyDelete
    Replies
    1. buat project di eclipse, kemudian copy source code ini ke editor agan.. :)

      Delete
  6. gan klo saya mau ada spasi bisa enkrip ga gan?

    ReplyDelete
    Replies
    1. bisa gan, cukup liat kode ascii dari spassi.. dan untuk string pastikan bentuk string... misalnya abjad.add(" ");

      Delete
  7. kalau source code sandi hill ada g mas???
    saya sedang butuh ni buat skripsi,
    mohon share kemari y mas( bennydanyael@gmail.com ),,,
    terimakasih sebelumnya,,,

    ReplyDelete
    Replies
    1. udah dapet source codenya belum gan? kebetulan aku butuh jg nih yg sandi hill.. bisa di bagi enggak? kalo bisa di kirim email ke (asrorgunawan@gmail.com).. kalo mau ak makasih bgt.. :) di tunggu ya gan.

      Delete
  8. sangat membantu untuk tugas akhir saya gan,... thanks berat :D :)

    ReplyDelete
  9. makasih udah sharing gan,, sangat membantu bgt, trus bisa dikembangkan lebih lanjut,, thanks gan :)

    ReplyDelete
  10. gan.. ada yg sandi hill nggk? kalo ada di posting dong.. kalo enggak ya krim e-mail jg boleh ke (asrorgunawan@gmail.com), nanti aku knjungin trus deh blognya.. mksih gan. :)

    ReplyDelete
  11. itu source code caesar chipher utk masalah apa gan?

    ReplyDelete
  12. makasih gan
    gan kalau yang dekripsi gimana ?
    saya bingung maklum newbie gan :D
    email :achhadis07@gmail.com

    ReplyDelete
  13. This comment has been removed by the author.

    ReplyDelete
  14. kalo yang decrypt gmn ya gan? jadi bingung gan

    ReplyDelete
  15. mas maksud putaran disini apa ya?

    ReplyDelete
  16. mas mau tau source code buat deskripsi dong? bisa kirim email ke agilwibisono7@gmail.com
    terimakasih sebelumnya

    ReplyDelete