Sabtu, 23 Juni 2012

Pemrograman Encripsi dengan bahasa Program JAVA


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 :
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.
  1. package caesarchiper;  
  2.   
  3. /** 
  4.  * 
  5.  * @author fachiem 
  6.  */  
  7. public class CaesarChiper {  
  8.   
  9.     private int asciiCode;  
  10.   
  11.     public String convertToChipperText(String input) {  
  12.         StringBuffer sBuffer = new StringBuffer();  
  13.         for (int i = 0; i = 'A') && (asciiCode <= 'Z') ?  
  14.                 ((asciiCode - 'A' + 3) % 26 +'A') : asciiCode);  
  15.   
  16.             sBuffer.append((char) asciiCode);  
  17.         }  
  18.         return sBuffer.toString();  
  19.     }  
  20.   
  21.     public String convertToPlainText(String input) {  
  22.         StringBuffer sBuffer = new StringBuffer();  
  23.         for (int i = 0; i = 'A') && (asciiCode <= 'Z') ?  
  24.                 ((asciiCode - 'Z' - 3) % 26 +'Z') : asciiCode);  
  25.   
  26.             sBuffer.append((char) asciiCode);  
  27.         }  
  28.         return sBuffer.toString();  
  29.     }  
  30.   
  31.     public static void main(String [] args){  
  32.         CaesarChiper caesarChiper = new CaesarChiper();  
  33.         System.out.println(caesarChiper.convertToChipperText("PESAN SANGAT RAHASIA"));  
  34.         System.out.println(caesarChiper.convertToPlainText("PHHW PH DIWHU WKH WRJD SDUWB"));  
  35.     }  
  36. }  
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