Algoritma Hill Cipher Untuk Menangani 256 Karakter ASCII Menggunakan Java
Table of Contents
Hill Chiper adalah salah satu algoritma kriptografi yang cukup populer untuk menyandikan data, meliputi enkripsi plainteks dan deskripsi chiperteks. Sebelumnya, saya pernah membahas hill chiper lengkap beserta contoh implementasinya dalam bahasa pemrograman java di postingan Implementasi Enkripsi Teks Menggunakan Hill Chiper pada Java khusus untuk enkripsinya. Sedangkan, untuk penjelasan deskripsinya, saya jelaskan di postingan Implementasi Deskripsi Teks Menggunakan Hill Chiper pada Java. Silakan dipelajari, karena konsep hill chiper beserta perhitungan manualnya, saya jelaskan disana. Namun untuk contoh implementasinya, saya contohkan hanya sebatas untuk karakter huruf, baik kapital maupun kecil. Sehingga jika user memberikan masukan plainteks berupa karakter tambahan seperti spasi, enter, angka, simbol, dsb, tentu tidak dapat diproses sehingga chiperteks tidak dapat dideskripsikan.
Beberapa pengunjung sempat meminta saya lewat comment blog maupun via WA untuk memperbaiki implementasi hill chiper, sehingga bisa untuk menampung banyak karakter. Standar baku yang dapat digunakan untuk melengkapi karakter adalah karakter ASCII sebanyak 256 buah. Setiap karakter ASCII memiliki code tertentu sebagai ID karakter tersebut. ASCII sendiri merupakan singkatan dari American Standard Code for Information Interchange yang menjadi acuan untuk huruf dan simbol international. Code dan karakter ASCII terangkum dalam Gambar 1.
Gambar 1. 256 Karakter ASCII |
Karakter ASCII sebanyak 256 pada gambar 1 akan menjadi acuan untuk plainteks dan chiperteks pada hill chiper, sehingga hasil enkripsi akan semakin kompleks. Jika menggunakan karakter huruf saja, hasil enkripsi tidak terlalu kompleks, sehingga rawan tertebak. Pada postingan lalu, saya menggunakan deklarasi manual untuk deklarasi setiap huruf dari huruf a hingga huruf z. Semua huruf saya letakkan satu-satu dalam array bertipe data string. Hal ini tentu sangat tidak efisien karena boros memori dan baris code. Pada postingan kali ini, deklarasi code ASCII pada hill chiper saya buat menjadi perulangan sehingga lebih cepat dan tidak terlalu memakan code dibandingkan saya deklarasikan manual 256 karakter ASCII. Berikut ini adalah potongan code untuk memproses transformasi karakter ASCII dari plainteks menjadi Code ASCII.
for (int i = 0; i < text.length; i++) { String char1 = text[i].substring(0, 1); String char2 = text[i].substring(1); int code1 = 0; int code2 = 0; for (int j = 0; j < char1.length(); j++) { code1 = (int) char1.charAt(j); System.out.println("Karakter " + (char) code1 + " memiliki kode ASCII " + code1); } char1 = String.valueOf(code1); for (int j = 0; j < char2.length(); j++) { code2 = (int) char2.charAt(j); System.out.println("Karakter " + (char) code2 + " memiliki kode ASCII " + code2); } char2 = String.valueOf(code2); if (hasilKonversi[i][0] == null) { hasilKonversi[i][0] = char1; if (hasilKonversi[i][1] == null) { hasilKonversi[i][1] = char2; } } }
Kemudian, dibuatlah program untuk menangani hill chiper 256 karakter menggunakan java. Tampilan saya samakan dengan tampilan sebelumnya agar memudahkan user. Gambar 2 menunjukkan hasil enkripsi hill chiper untuk 256 karakter ASCII. Tentu menghasilkan chiperteks yang kompleks.
Untuk deskripsinya, saya tunjukkan di gambar 3. Menggunakan kunci yang sama, program bisa melakukan deskripsi sempurna sehingga menghasilkan plainteks yang sesuai dengan aslinya.
Gambar 2. Implementasi Enkripsi 256 Karakter menggunakan Java |
Untuk deskripsinya, saya tunjukkan di gambar 3. Menggunakan kunci yang sama, program bisa melakukan deskripsi sempurna sehingga menghasilkan plainteks yang sesuai dengan aslinya.
Gambar 3. Implementasi Deskripsi 256 Karakter menggunakan Java |
Program hill chiper (enkripsi dan deskripsi) untuk menangani 256 karakter ASCII ini tentu cocok digunakan teman-teman untuk tugas akhir maupun skripsi. Tentu tinggal dipoles sedikit agar terlihat lebih baik, baik dari sisi tampilan maupun kompleksitas. Bagi teman-teman yang menginginkan program ini silakan japri saya via WA maupun email. Semoga bermanfaat.
Salam
Informatika Kita