Caesar Cipher adalah metode yang menggunakan putaran abjad.cara mencari enkripsinya adalah dengan cara memajukan nilai putaran dari abjad yang dimasukkan.
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.
mantap gan,,, terbantu ne ngerjain tugas.. :D
ReplyDeletesama-sama gan.. :D
Deleteberarti untuk dekripsi tinggal dikurangin aja ya gan?
ReplyDeleteiya gan, cukup kebalikannya aja,,,
Deletemantap cing.. makasii yak..
ReplyDeletesama-sama... :D
Deletekeren keren..
ReplyDeletekunjngi jga http://www.zagalarupa.blogspot.com ya.. ^^
klo Affine chiper gmna cra.a???
ReplyDeleteAffine saya belum coba mbak, tapi kalau mbak tau prosesnya, boleh kirim ke email saya johannes_purba@yahoo.com atau jhohannespurba@gmail.com
Deletenanti akan saya coba buat codingnya.. :D
anak tekno yak??
Deletegan klaw untuk program eclipse gmna gan saya btuh bnget ni gan
ReplyDeletebuat project di eclipse, kemudian copy source code ini ke editor agan.. :)
Deletegan klo saya mau ada spasi bisa enkrip ga gan?
ReplyDeletebisa gan, cukup liat kode ascii dari spassi.. dan untuk string pastikan bentuk string... misalnya abjad.add(" ");
Deletekalau source code sandi hill ada g mas???
ReplyDeletesaya sedang butuh ni buat skripsi,
mohon share kemari y mas( bennydanyael@gmail.com ),,,
terimakasih sebelumnya,,,
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.
Deletesangat membantu untuk tugas akhir saya gan,... thanks berat :D :)
ReplyDeletemakasih udah sharing gan,, sangat membantu bgt, trus bisa dikembangkan lebih lanjut,, thanks gan :)
ReplyDeletegan.. 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. :)
ReplyDeleteitu source code caesar chipher utk masalah apa gan?
ReplyDeletemakasih gan
ReplyDeletegan kalau yang dekripsi gimana ?
saya bingung maklum newbie gan :D
email :achhadis07@gmail.com
This comment has been removed by the author.
ReplyDeletekalo yang decrypt gmn ya gan? jadi bingung gan
ReplyDeletemas maksud putaran disini apa ya?
ReplyDeletemas mau tau source code buat deskripsi dong? bisa kirim email ke agilwibisono7@gmail.com
ReplyDeleteterimakasih sebelumnya
pke aplikasi ap
ReplyDelete