Anda di halaman 1dari 8

PENERAPAN ENKRIPSI MONOALPHABETIK DENGAN ALGORITMA XOR SEBAGAI PEMBANDING

Dani Aquarius Febrianda G1A011010 Program Studi Teknik Informatika Fakultas teknik Universitas Bengkulu,jl.W.R.Supratman ,kandang limun dhaniaquarius@gmail.com Abstract- Dewasa ini pengamanan pesan menggukan metode enrkripsi sangat popular namun dari sekian banyak yang di gunakan , system enkripsi menggukan subtitusi monoalphabetik adalah metode yang sangat ringan dan mudah di gunakan . Namun system monoalphabetik memiliki kelemahan dalam enkripsi dan dekripsi data yang mudah untuk di pecahkan , maka dari itu di butuhkan revolusi system enkripsi agar bias membuat keamanan semakin terjamin. Pada makalah ini penulis akan menawarkan metode pengembangan subtitusi monoalphabetik . I. PENDAHULUAN proses enkripsi dalam kriptografi adalah membuat pesan-pesan tertentu menjadi tidak dapat dibaca atau dikenali oleh pihak yang tidak berkepentingan.proses enkripsi akan mempersulit pihak yang tidak berkepentingan untuk membaca data tersebut. Proses enkripsi ini dapat dilakukan dengan menggunakan berbagai algoritma kriptografi yang ada. Enkripsi sangat penting di gunakan agar pesan rahasia teramin keamananya dari gangguan demi menghindari hal-hal yang di anggap tak perlu. Sistem cipher substitusi adalah sebuah algoritma enkripsi dan dekripsi yang mensubstitusi unit-unit sebuah text dengan unit-unit lain berdasarkan aturan tertentu. II. DASAR TEORI Kriptografi adalah ilmu yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi, seperti kerahasiaan data, keabsahan data, integritas data, serta autentikasi data. Tetapi tidak semua aspek keamanan informasi dapat diselesaikan dengan kriptografi. Kriptografi dapat pula diartikan sebagai ilmu atau seni untuk menjaga keamanan pesan. Pada prinsipnya, Kriptografi memiliki 4 komponen utama yaitu antara lain plaintext, ciphertext, key, dan Algoritm. Pada plaintext berisi pesan yang dapat dibaca, ciphertext berisi pesan acak yang tidak dapat dibaca dan merupakan enkripsi, key berisi kunci untuk melakukan teknik kriptografi dan algorithm berisi metode untuk melakukan enkripsi dan deskripsi. Enkripsi adalah sebuah proses menjadikan pesan yang dapat

dibaca (plaintext) menjadi pesan acak yang tidak dapat dibaca (ciphertext). Dekripsi merupakan proses kebalikan dari enkripsi dimana proses ini akan mengubah ciphertext menjadi plaintext dengan menggunakan algortima pembalik dan key yang sama. a. Penyandian Monoalfabetik Sistem cipher substitusi monoalfabetik memetakan tiap huruf satu per satu , dimana tiap huruf alfabet dipetakan ke huruf setelahnya. Untuk melakukan dekripsi dari ciphertext, sebuah substitusi kebalikannya dilakukan, misalnya bila enkripsinya adalah mengganti huruf plaintext dengan huruf alfabet setelahnya, Proses penyandian (enkripsi) dapat secara matematis menggunakan operasi modulus dengan mengubah huruf-huruf menjadi angka, A = 0, B = 1,..., Z = 25. Sandi (E_n) dari "huruf" x dengan geseran n secara matematis dituliskan dengan,

Operasi XOR merupakan operasi logika bitwise yang bekerja dengan membandingkan dua buah bit yang apabila pada salah satu bit nya bernilai Benar, maka hasil akhir operasi XOR tersebut adalah benar. Namun, bila kedua bit yang akan dibandingkan bernilai Salah atau keduanya bernilai Benar maka hasil akhir operasi XOR tersebut adalah Salah. XOR enkripsi, meskipun bukan sistem kunci-publik seperti RSA, hampir bisa dipecahkan melalui metode brute force. Hal ini rentan terhadap pola, tetapi kelemahan ini dapat dihindari melalui, pertama mengompresi file (sehingga untuk menghilangkan pola). Enkripsi eksklusif atau membutuhkan baik encryptor dan decryptor memiliki akses ke kunci enkripsi, tetapi algoritma enkripsi, sementara sangat sederhana, hampir bisa dipecahkan. Karya XOR enkripsi dengan menggunakan fungsi aljabar boolean XOR.

Sedangkan pada proses pemecahan kode (dekripsi), hasil dekripsi (D_n) adalah

b. Algoritma XOR

Dapat dilihat dari gambar di atas, pada gambar terlihat nilai pada variabel X yang di XOR kan dengan variabel Y dan menghasilkan nilai yang ada pada

variabel X^Y. lalu variabel X^Y di XOR kan lagi dengan variabel Y dan kemudian menghasilkan nilai yang sama dengan nilai yang ada pada variabel X. Sifat seperti ini yang dapat kita gunakan untuk membuat enkripsi sederhana. Misal terdapat karakter A = 01000001 di XOR kan dengan 10000000 maka hasilnya akan menjadi 11000001 atau karakter dan jika di XOR kan lagi, maka akan kembali menjadi 01000001 atau A lagi. Ide dibalik enkripsi XOR adalah tidak mungkin untuk membalikkan operasi tanpa mengetahui nilai awal dari salah satu dari dua argumen. Misalnya, jika Anda XOR dua variabel dari nilai yang tidak diketahui, Anda tidak bisa mengatakan dari output apa nilai-nilai variabel tersebut adalah. Misalnya, jika Anda mengambil operasi A B XOR, dan ia mengembalikan TRUE, Anda tidak dapat mengetahui apakah A adalah FALSE dan B adalah TRUE, atau apakah B adalah PALSU dan A adalah BENAR. Lebih jauh lagi, bahkan jika ia mengembalikan FALSE, Anda tidak bisa memastikan jika kedua adalah TRUE atau jika keduanya FALSE. Cara yang sebenarnya enkripsi XOR digunakan adalah untuk mengambil kunci dan mengenkripsi file dengan berulang kali dan menerapkan kunci untuk segmen berturut-turut dari file dan menyimpan output. Output akan menjadi setara dengan program acak sepenuhnya, sebagai kunci yang dihasilkan secara acak. Setelah orang kedua memiliki akses ke tombol yaitu orang yang mampu mendekripsi file,

tetapi tanpa itu, dekripsi hampir mustahil. Untuk setiap bit ditambahkan dengan panjang kunci. Ia butuh waktu dua kali lipat untuk mencoba memecahkan enkripsi melalui metode brute force. c. Hexadecimal Hexadecimal merupakan gabungan dari kata hex dan decimal, kata decimal dari kata dec yg artinya 10. maksudnya bahawa terdapat 10 digit angka dari cara ini (Dec) yaitu 0 1 2 3 4 5 6 7 8 9. selanjutnya adalah (Hex) yg bererti 6yg terdiri atas a b c d e f, dan bila digabungkan keduanya menjadi 16 yg bererti terdapat enam belas digit dalam system abjad pada hexadecimal, yaitu 0 1 2 3 4 5 6 7 8 9 a b c d e f. Kita semua tahu bahawa data yg dikirimkan dalam proses inputoutput computer diolah dalam bentuk bit atau binary digit iaitu berupa angka 0 dan 1 yg ertinya true atau false (on dan off), didalam hexadecimal byte dipecah menjadi 2 bahagian dimana untuk satu bytenya sama dengan 8 bit. Format byte merupakan format yg terdiri dari digit 0 atau 1 yg berjumlah delapan bit

Karena bilangan-bilangan pada hexadecimal sangat sukar untuk di artikan dibuatlah hexadecimal yg memecah byte menjadi 4 satuan bit, yg

berarti kita akan memiliki 16 kombinasi (256=16*16). Dengan demikian 1 blok byte yg terdiri dari 8 digit bit dibagi menjadi 2 digit hexadecimal. Yang digambarkan sebagai berikut :

plain : a b c d e f g h i j k l m n o p q r stuvwxyz cipher: D E F G H I J K L M N O P Q RSTUVWXYZABC jadi setiap huruf akan di ganti dengan huruf chipper yang uang menjadi subtitusiny seperti gambar di bawah ini.

Menjadi Monoalphabetic Cipher (Cipher abjad tunggal) adalah enkripsi metode subtitusi yang memetakan tiap-tiap abjad dengan abjad lain secara random, bukan metode pergeseran seperti Caesar cipher. Misal A -> D, B -> I, C -> Q dan seterusnya. Hal ini dilakukan untuk mempersulit kriptaanalis dalam menganalisa pola susunan plain text-nya. Namun demikian enkripsi subtitusi abjad tunggal ini mudah sekali untuk dipecahkan dengan analisis frekuensi. Kalau diamati dalam suatu bahasa apapun, pasti terdapat huruf yang sering muncul, dan pastinya adalah huruf vokal seperti A, I, U, E, O. Jadi kasus yang di selesaikan di sini dapat di jelaskan dengan contoh ; Plainteks : SAYA KEREN Enripsi : vdbd nhuhq

Jadi bila anda menjumpai digit hexadecimal A pola bitnya adalah 1010. Hexadecimal biasanya ditulis dalam bentuk yg special untuk membedakannya dari bilangan biasa / decimal. Bilangan hexadecimal biasanya ditulis dalam format 0x12, atau $12 atau juga x12 III.ENKRIPSI PESAN MONOALPABETIK DENGAN ALGORITMA XOR Pada enkripsi subtitusi monoalphabetic enkripsi yang di lakukan adalah Metode Caesar Cipher yang digunakan oleh Julius Caesar. Pada prinsipnya, 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:

Jadi dapat di simpulkan bahwa subtitusi monoalphabetic hanya mengganti huruf sesuai kunci yang ada

atau mereplece huruf dengan kunci .akan tetapi enkripsi model ini memiliki banyak kekurangan di berbagai sisi dmn pemecahan kode enkripsi termasuk mudah . Enkripsi ini sangat mudah di pecahkan dengan analisis frekuensi dan percobaan perulangan kunci dengan spica dll. huruf relatif dapat ditentukan dan dibandingkan dengan distribusi frekuensi standar untuk bahasa Inggris . Ada sejumlah cara untuk melanjutkan, bisa dibuat beberapa tugas tentatif dan mulai untuk mengisi plaintext untuk melihat apakah itu terlihat seperti kerangka pesan yang wajar. Pendekatan yang lebih sistematis untuk mencari keteraturan lainnya. Misalnya, kata-kata tertentu dapat diketahui dalam teks. Atau bisa mencari pengulangan urutan huruf cipher dan mencoba untuk menyimpulkan plaintext yang setara. Jadi untuk mengantisipasi hal ini di buthkan sebuah cara baru dalam tahap enkripsi agar pesan sulit untuk di pecahkan kriptanalis ,agar pesan tetap aman . Maka dari itu kita membutuhkan metode XOR sebagai pembanding . jadi data akan di tampilkan dalam bentuk binary yang sulit untuk di pecahkan kriptanalis di mana propses yang di jalankan sebagai berikut : Buat pesan /plain teks yang akan di enkripsi Enkripsi dengan metode subtitusi monoalphabetic yaitu Caesar chipper

Enkrisi kembali pesan dari hasil dari proses Caesar chipper dengan XOR sehingga pesan berubah menjadi bentuk binary Setelah itu bentuk binary di ubah kembali menjadi huruf alphabet sehingga pesan menjadi enkripsi bertingkat .

Penerapan kedalam program: import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent ; import java.awt.event.ActionListe ner; public class caesar { JPanel encrypt,decrypt,butPanel,b utPanel2; JTextField txtEncrypt,txtDecrypt,txtE ncrypt1,txtDecrypt1; JButton butEncrypt,butDecrypt; caesar(){ JFrame main = new JFrame("XOR MonoAlphabetic"); main.setDefaultCloseOperat ion(JFrame.EXIT_ON_CLOSE); encrypt = new JPanel(new GridLayout(3,1,1,1)); decrypt = new JPanel(new GridLayout(3,1,1,1)); butPanel = new JPanel(); butPanel2 = new JPanel();

butEncrypt = JButton("Encrypt"); butDecrypt = JButton("Decrypt"); main.setLocation(200, 300);

new encrypt.add(txtEncrypt1); new encrypt.add(butPanel2); butPanel2.add(butDecrypt); butDecrypt.addActionListen er(new Convert()); main.pack();

main.setVisible(true); main.setLayout(new BorderLayout()); main.add(encrypt,BorderLay out.EAST); main.add(decrypt, BorderLayout.WEST); txtEncrypt = new JTextField(15); txtDecrypt = new JTextField(15); txtEncrypt1 = new JTextField(15); txtDecrypt1 = new JTextField(15); decrypt.add(new JLabel("Plain Text: ")); decrypt.add(txtEncrypt); decrypt.add(new JLabel("Cipher Text: ")); decrypt.add(txtDecrypt); decrypt.add(butPanel); butPanel.add(butEncrypt); butEncrypt.addActionListen er(new Convert()); encrypt.add(new JLabel("Cipher Text: ")); encrypt.add(txtDecrypt1); encrypt.add(new JLabel("Plain Text: "));

} //End of Constructor /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here new caesar(); } //End main public class Convert implements ActionListener{ char chars[] = {'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' }; String replace[] = {"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" }; public void actionPerformed(ActionEven t ae){ if(ae.getSource()== butEncrypt){

char[] plain = txtEncrypt.getText().toLow erCase().toCharArray(); String cipher = null; for(int i = 0;i<plain.length;i++){ for(int j = 0 ; j<26;j++){ if(j<=22){ if(plain[i]==chars[j]){ plain[i] = chars[j+3]; break; } }//End nested If else if(plain[i] chars[j]){ plain[i] = chars [j-23]; } } } cipher String.valueOf(plain); = ==

txtDecrypt1.getText().toLo werCase().toCharArray(); for(int i 0;i<cipher.length;i++){ =

for(int j = 0 ; j<26;j++){ if(j>=3 cipher[i]==chars[j]){ cipher[i] = chars[j-3]; break; } if(cipher[i] && j<3){ == chars[j] &&

System.out.println("Replac ing "+cipher[i]+" by "+chars[23+j]+" "+j+23+""); cipher[i] = chars[23+j]; break; } //End IF } //End nested for loop } //End of For loop txtEncrypt1.setText(String .valueOf(cipher)); }//End else //Convert cipher text to plain text } } }

txtDecrypt.setText(cipher) ; } //End if == =

if(ae.getSource() butDecrypt){ char[] cipher

Output :

PERNYATAAN Dengan ini saya menyatakan bahwa makalah yang saya tulis ini adalah tulisan saya sendiri, bukan saduran, atau terjemahan dari makalah orang lain, dan bukan plagiasi. Bengkulu ,4 november 2013

KESIMPULAN Jadi dapat di simpulkan bahwa cesar chipper yang di gabungkan dengan algoritma XOR sebagai pembanding akan membuat pesan lebih kuat di bandingkan dengan Caesar chipper biasa. Bahwa pesan yang di simpulkan dengan enkripsi jenis ini akan lebih sulit di pecahkan oleh kriptanalis karena menggunakan enkripsi bertingkat

Dani Aquarius Febrianda G1A011010

REFERENSI
[1 ]http://chika-2513.blogspot.com /2012 /03/enkripsi-xor-pengenalan.html [2]http://infokriptografi.blogspot.com/ 2010/01/source-code-vigenere-padajava.html [3] http://math.ucsd.edu/~crypto/java/EARL YCIPHERS/Monoalphabetic.html [4]http://myfileskomp.blogspot.com/ 2013/02/ekripsi-monoalphabetik.html

Anda mungkin juga menyukai