Dalam kriptografi, cipher Caesar, juga dikenal sebagai cipher
pergeseran, kode Caesar (Caesar Code) atau pergeseran Caesar (Caesar Shift) ,
adalah salah satu teknik enkripsi yang paling sederhana dan paling banyak
dikenal.
Ini adalah jenis cipher substitusi dimana setiap huruf dalam plaintext
diganti dengan huruf lain yang berada di beberapa huruf setelahnya. Misalnya,
dengan pergeseran kiri 3, D akan digantikan oleh A, E akan menjadi B, dan
sebagainya. Metode ini dinamai Julius Caesar, yang pertama kali menggunakan kriptografi ini.
Langkah enkripsi didalam cipher Caesar sering dimasukkan
sebagai bagian dari skema kriptografi yang lebih kompleks, seperti cipher
Vigenère, dan dalam aplikasi modern sistem ROT13. Cipher Caesar mudah dipecahkan
apabila kunci pergeseran sudah ditemukan.
Transformasi dapat direpresentasikan dengan menyelaraskan
dua huruf; alfabet cipher adalah alfabet biasa diputar ke kiri atau kanan
dengan beberapa posisi. Misalnya, di sini adalah cipher Caesar menggunakan
rotasi kiri tiga tempat, setara dengan pergeseran kanan 23 (parameter
pergeseran digunakan sebagai kunci):
Plain: ABCDEFGHIJKLMNOPQRSTUVWXYZ
Cipher: DEFGHIJKLMNOPQRSTUVWXYZABC
Ketika melakukan enkripsi, seseorang mengubah setiap huruf
dari pesan asli (plaintext) dan menuliskan huruf yang sesuai dalam
"cipher" line. Sedangkan saat mendeskripsi, dilakukan secara terbalik
/ membalik proses enkripsi yaitu dengan pergeseran kanan 3.
Jadi kalimat plainteks THE QUICK BROWN FOX JUMPS OVER THE
LAZY DOG akan diubah menjadi kalimat chiperteks GLGXNXQJ TXLFN EURZQ IRA MXPSV
RYHU GLGXNXQJ ODCB GRJ
Berikut ini disajikan contoh code sandi / kriptgrafi
tersebut diatas dengan bahasa Pemrograman Java
public class Cipher {
public static void
main(String[] args) {
String str = "The quick brown fox
Jumped over the lazy Dog";
System.out.println( Cipher.encode( str,
12 ));
System.out.println( Cipher.decode( Cipher.encode( str, 12), 12 ));
}
public static String decode(String enc, int
offset) {
return
encode(enc, 26-offset);
}
public static String encode(String enc, int
offset) {
offset =
offset % 26 + 26;
StringBuilder
encoded = new StringBuilder();
for (char i :
enc.toCharArray()) {
if
(Character.isLetter(i)) {
if
(Character.isUpperCase(i)) {
encoded.append((char) ('A' + (i - 'A' +
offset) % 26 ));
} else
{
encoded.append((char) ('a' + (i - 'a' + offset) % 26 ));
}
} else {
encoded.append(i);
}
}
return
encoded.toString();
}
}
saya belum tahu hal ini ... ntar cari tahu deh...
ReplyDeletekunjungi dan komentar gan
http://www.illustrationdesigners.com/
OKe, makasih kunjungannya. Segera komen balik :D
DeleteWah dulu pernah nyari kode ini pas ada tugas.. Malah baru ketemunya sekarang:(_
ReplyDeleteTelat sedikit ya?
Delete