Halaman Utama

Tuesday, March 22, 2011

Kriptografi Caesar Zig-zag

ane mau share lagi nih gan, tentang metode kriptografi Caesar Chipper ama metode Zig-zag..ini hasil bikinan sohib ane (waktu itu ane minta tolong buatin tugas :p), komti ane di kampus neh..,, Mr. Halim, tu nama yang ane paling seneng manggilnya :p
ane kombinasiin, tujuannya yah buat keamanan..selain susah dipecahkan (dideskripsikan) kriptografi model yang ini juga unik, karena menurut ane, ini adalah penggabungan antara metode kriptografi yang tergolong mudah (Caesar Chipper) dan metode yang rada susah (Zig-zag)...oke dah gan,, dari pada cape baca tulisan ane,, chekitproot aja daahh :D

nih Source Code-nyaa :

package caesar_zigzag.ui;
import java.util.ArrayList;
public class mainUi extends javax.swing.JFrame {
 public mainUi() {
        initComponents();
    }
 private void bEnkripsiActionPerformed(java.awt.event.ActionEvent evt) {  
encrypt();
    }             
private void bClearActionPerformed(java.awt.event.ActionEvent evt) {
tKey.setText("");
        tKey1.setText("");
        tKey2.setText("");
        tKey3.setText("");
        tInput.setText("");
        tOutput.setText("");
    }                       
public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new mainUi().setVisible(true);
            }
        });
    }
   
    private void encrypt(){
        String input1 = tInput.getText();
        String input = input1.toLowerCase();
        String passkey = tKey.getText();
        int key = Integer.parseInt(passkey);
        int panjang = input.length();       //mengetahui panjang dari string
        int i, j = 4;         
        char[] karak = input.toCharArray(); //konversi nilai string ke bentuk string dan didisimpan kedalam array
        String output = ""; 
        char hasil;
for (i=0 ; i<panjang ; i++) {
            int angkahuruf = (int)karak[i]; //inisialisasi nilai ascii dari karakter ke-i
           
            if(key<26){
                if(angkahuruf==32 || angkahuruf==10){             //seleksi space
                    hasil = (char) (angkahuruf);
                }
                else if(angkahuruf>=97 && angkahuruf<=122){
                    int nilaiencrypt = angkahuruf+key;
                    if(nilaiencrypt>122){
                        hasil = (char) (nilaiencrypt-26);
                    }
                    else {
                        hasil = (char) (nilaiencrypt);
                    }
                }
                else {
                    hasil = (char) (120);
                }
            }else{
                hasil = (char) (120);               
            }           
            output = (String) (output + hasil);
            }
        System.out.println(output);
        //proses enkripsi menggunakan metode zigzag       
        String input_key1=tKey1.getText().toLowerCase();
        String input_key2=tKey2.getText().toLowerCase();
        String input_key3=tKey3.getText().toLowerCase();
        String input_plain=output;
        int panjang_input_key1=input_key1.length();
        int panjang_input_key2=input_key2.length();
        int panjang_input_key3=input_key3.length();
        int panjang_plain=input_plain.length();
        char[] key1=input_key1.toCharArray();
        char[] key2=input_key2.toCharArray();
        char[] key3=input_key3.toCharArray();
        char[] plain=input_plain.toCharArray();       
        String ui = "";
       
        ArrayList kunci1=new ArrayList();//alokasi array untuk kunci 1
        ArrayList kunci2=new ArrayList();//alokasi array untuk kunci 2
        ArrayList kunci3=new ArrayList();//alokasi array untuk kunci 3
        ArrayList abjad=new ArrayList();
        ArrayList kata_plain=new ArrayList();//alokasi array untuk plain text
        ArrayList kata_chiper1=new ArrayList();//alokasi array untuk chiper text kunci 1
        ArrayList kata_chiper2=new ArrayList();//alokasi array untuk chiper text kunci 2
        ArrayList kata_chiper3=new ArrayList();//alokasi array untuk chiper text kunci 3
       
        //pengecekkan key 1
        for(i=0;i<panjang_input_key1;i++){
            if(kunci1.contains(key1[i])==false){
                kunci1.add(key1[i]);
            }
        }
       
        //pengecekkan key 2
        for(i=0;i<panjang_input_key2;i++){
            if(kunci2.contains(key2[i])==false){
                kunci2.add(key2[i]);
            }
        }
       
        //pengecekkan key 3
        for(i=0;i<panjang_input_key3;i++){
            if(kunci3.contains(key3[i])==false){
                kunci3.add(key3[i]);
            }
        }

//pendeklarasian semua abjad
        for(i=0;i<26;i++){
            abjad.add((char)(97+i));
        }
 //pemasukkan abjad yang belum terdapat pada kunci 1
        for(i=0;i<abjad.size();i++){
            if(kunci1.contains(abjad.get(i))==false){
                kunci1.add(abjad.get(i));
            }
        }
       
        //pemasukkan abjad yang belum terdapat pada kunci 2
        for(i=0;i<abjad.size();i++){
            if(kunci2.contains(abjad.get(i))==false){
                kunci2.add(abjad.get(i));
            }
        }
       
        //pemasukkan abjad yang belum terdapat pada kunci 3
        for(i=0;i<abjad.size();i++){
            if(kunci3.contains(abjad.get(i))==false){
                kunci3.add(abjad.get(i));
            }
        }
       
        //pemasukkan seleksi space dan enter
        kunci1.add((char)(32));
        kunci1.add((char)(10));
       
        kunci2.add((char)(32));
        kunci2.add((char)(10));
       
        kunci3.add((char)(32));
        kunci3.add((char)(10));
       
        abjad.add((char)(32));
        abjad.add((char)(10));
//memasukkan plain text kedalam array list
        for(i=0;i<panjang_plain;i++){
            kata_plain.add(plain[i]);
        }
       
        //mendapatkan hasil encrypt dari key 1
        for(i=0;i<panjang_plain;i++){
            int urutan_abjad1=abjad.indexOf(kata_plain.get(i));
            kata_chiper1.add(kunci1.get(urutan_abjad1));           
        }
        //cek
        for(i=0;i<kata_chiper1.size();i++){
            System.out.println(kata_chiper1.get(i));
        }
       
        //mendapatkan hasil encrypt dari key 2
        for(i=0;i<panjang_plain;i++){
            int urutan_abjad2=abjad.indexOf(kata_chiper1.get(i));
            kata_chiper2.add(kunci2.get(urutan_abjad2));           
        }
        //cek
        for(i=0;i<kata_chiper2.size();i++){
            System.out.println(kata_chiper2.get(i));
        }
       
        //mendapatkan hasil encrypt dari key 2
        for(i=0;i<panjang_plain;i++){
            int urutan_abjad3=abjad.indexOf(kata_chiper2.get(i));
            kata_chiper3.add(kunci3.get(urutan_abjad3));           
        }
        //cek
        for(i=0;i<kata_chiper3.size();i++){
            System.out.println(kata_chiper3.get(i));
        }
       
        //menampilkan hasil ke tOutput
        String output_final = (String) (kata_chiper3.toString());
        char[] tampilan=output_final.toCharArray();
        int p=tampilan.length;
       
        for(i=0;i<p;i++){
            if(i==1||i==j){
                ui=ui+tampilan[i];
                if(i==j){
                    j=j+3;
                }
            }
        }
        tOutput.setText(ui);
    }
   
    // Variables declaration - do not modify                    
    private javax.swing.JButton bClear;
    private javax.swing.JButton bEnkripsi;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JTextArea tInput;
    private javax.swing.JTextField tKey;
    private javax.swing.JTextField tKey1;
    private javax.swing.JTextField tKey2;
    private javax.swing.JTextField tKey3;
    private javax.swing.JTextArea tOutput;
    // End of variables declaration                  
   
}

oke gan, tu yah codingnya,, interfacenya kagak ane posting,, gpp yaah :D
oke,, selamat mencoba... :)

3 comments:

kasper said...

cara pembuatannya gimana gan dari awal

Unknown said...

error initComponents() kenapa ya gan??

RIDHO DWI CAHYO said...

Pake komponen apa aja ya selain 2 button ?

Post a Comment