Salah satu contoh dari
“substitution cipher” adalah Caesar Cipher yang digunakan oleh Julius Caesar. Pada prinsipnya sama saja seperti ROT13, hanya saja setiap huruf digantikan dengan huruf
yang berada tiga (3) posisi dalam urutan alfabet. Sebagai contoh huruf “a”
digantikan dengan huruf “D” dan seterusnya.
Transformasi yang digunakan adalah seperti ini :
Transformasi yang digunakan adalah seperti ini :
plain : a b c d e f g h i j k l m n o p q r s t u v w x y z
cipher: D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
Disini saya akan
mengimplentasikan Caesar Cipher menggunakan kode Java.
- package caesarchiper;
- /**
- *
- * @author fachiem
- */
- public class CaesarChiper {
- private int asciiCode;
- public String convertToChipperText(String input) {
- StringBuffer sBuffer = new StringBuffer();
- for (int i = 0; i = 'A') && (asciiCode <= 'Z') ?
- ((asciiCode - 'A' + 3) % 26 +'A') : asciiCode);
- sBuffer.append((char) asciiCode);
- }
- return sBuffer.toString();
- }
- public String convertToPlainText(String input) {
- StringBuffer sBuffer = new StringBuffer();
- for (int i = 0; i = 'A') && (asciiCode <= 'Z') ?
- ((asciiCode - 'Z' - 3) % 26 +'Z') : asciiCode);
- sBuffer.append((char) asciiCode);
- }
- return sBuffer.toString();
- }
- public static void main(String [] args){
- CaesarChiper caesarChiper = new CaesarChiper();
- System.out.println(caesarChiper.convertToChipperText("PESAN SANGAT RAHASIA"));
- System.out.println(caesarChiper.convertToPlainText("PHHW PH DIWHU WKH WRJD SDUWB"));
- }
- }
Karena karakter spasi diabaikan
(ketika menginputkan karakter spasi tidak perlu dirubah menjadi kode ascii),
maka saya mengelompokkan sendiri karakter spasi dari karakter yang lain. Letak
kodenya disini :
int cap = asciiCode & 32 ;
asciiCode &= ~cap;
ChiperText. Pada prinsipnya logika ChiperText untuk
kode di atas adalah ketika kita menginputkan huruf, huruf tersebut di rubah
menjadi kode ascii terlebih dahulu dan ditambahkan 3 dari posisi semulanya.
Jumlah semua karakter huruf adalah 26 dan untuk ChiperText standard huruf yang
dijadikan patokan adalah ‘A’, sehingga rumus yang dipakai seperti ini :
asciiCode = (asciiCode - 'A' + 3) % 26 +'A';
Rumus diatas juga berfungsi untuk
mengubah huruf kecil menjadi huruf besar(UPPERCASE). Inputan hanya terbatas
berupa huruf-huruf saja. Jika inputan bukan huruf , maka dianggap null (inputan
kosong), sehingga kode yang dituliskan seperti ini :
asciiCode = ( (asciiCode >= 'A') && (asciiCode <= 'Z') ? ((asciiCode - 'A' + 3) % 26 +'A') : asciiCode);
PlainText. Logikanya sama seperti ChiperText, hanya
saja untuk PlainText huruf yang diinputkan dikurangkan 3 dari posisi semula dan
huruf yang jadi patokan adalah ‘Z’, sehingga rumus yang dipakai adalah seperti
ini :
asciiCode = (asciiCode - 'Z' - 3) % 26 +'Z';
OUTPUT PROGRAM
Pada saat program dijalankan,
maka yang tampil adalah seperti ini :
SHVDQ VDQJDW UDKDVLD
MEET ME AFTER THE TOGA PARTY
Tidak ada komentar:
Posting Komentar