BAB 3 PERANCANGAN PROGRAM 3.1 Spesifikasi Rumusan Perancangan Perancangan program aplikasi ini di buat melalui Java 1.5.0 dengan menggunakan editor Netbeans 5.5 Perancangan program aplikasi di bagi menjadi dua bagian proses yaitu: • Encode Bagian ini adalah bagian penyisipan atau penempelan file/pesan kedalam cover image yang berformat 24-bit Bitmap, proses ini akan menghasilkan gambar yang telah disisipi pesan yang di namakan stegoimage. • Decode Proses decode adalah proses pengambilan file/pesan yang telah di sispkan kedalam media citra berformat 24-bit Bitmap dengan memilih stegoimage. 3.2 Perancangan Modul Pada Menu utama berisi dua pilihan yaitu Penyisipan Dan Pengambilan Terdapat 3 form atau modul di dalam program ini yaitu: Modul Utama, Modul Penyisipan, dan Modul Pengambilan. 22 3.2.1 Modul Utama Menu utama berisikan 2 tombol yang akan masing-masing menuju pada Menu Penyisipan dan Menu Pengambilan. Pengguna dapat memilih menu Penyisipan dengan memilih tombol Penyisipan apabila ingin menempelkan pesan kedalam gambar, bila ingin mengambil pesan di dalam gambar dapat memilih menu Pengambilan. Modul Menu utama menggunakan class java yaitu : 1. Main.java Pada Main.java, pertama kali di buat GUI untuk menu utama dan menjadi penghubung terhadap 2 menu yang lainya. Gambar 3.1 Menu Utama 23 3.2.2 Modul Penyisipan Modul Penyisipan ini adalah modul yang menangani semua penyisipan pesan kedalam cover image yang berformat 24-bit Bitmap non-compression. Modul ini akan menghasilkan stegoimage yang berisi pesan yang telah disembunyikan. Modul ini menggunakan class java antara lain: 1. SelectDataFile.java 2. EncodeStegoImage.java 3. ConcealControl.java 4. LoadBitmapBytes.java 5. BmpFilter.java 6. BMPfile.java 7. SelectCoverFile.java 8. BMPFile.java Class SelectDataFile.java mempunyai fungsi sebagai menu untuk memilih file yang disisipkan sebagai pesan, EncodeStegoImage berfungsi untuk menampilkan proses dalam penyisipan pesan kedalam cover image Class ConcealControl.java adalah class yang menjadi inti dalam mencode pesan untuk di sisipi kedalam cover image, di dalam ConcealControl terdapat metode LSB dan MELSBR. LoadBitmapBytes.java berfungsi untuk mengambil nilai pixel RGB di dalam gambar Bitmap, BmpFilter.java berfungsi sebagai validasi dalam SelectCoverFile.java adalah pengambilan gambar bitmap di dalam program, menu yang di tampilkan dalam memilih cover image. BMPFile.java berfungsi dalam membuat file bitmap baru. 24 Gambar 3.2 Menu Pilih File Gambar 3.3 Menu Pilih Cover Image 3.2.3 Modul Pengambilan Pada Modul pengambilan akan mempunyai beberapa menu yaitu: Menu Pilih StegoImage dan menu Ekstrak Image. Modul ini berfungsi untuk memilih ,memproses dan mengambil pesan pada stegoimage. Stegoimage harus berformat 24-bit bitmap non- 25 compression dan mempunyai pesan di dalamnya yang telah di sisipi dengan menggunakan metode MELSBR. Modul ini menggunakan class java antara lain: 1. DecodeStegoImage.java 2. SelectStegoImage.java 3. LoadBitmapBytes.java 4. RevealControl.java Class SelectStegoImage.java adalah menu untuk memilih stegoimage yang berformat 24-bit bmp untuk di ambil pesan tersembunyinya, class DecodeStegoImage menampilakan proses dalam pengekstrakan pesan di dalam stegoimage, class RevealControl.java merupakan inti dalam melakukan proses pengekstrakan pesan, RevealControl bertugas untuk mengambil informasi di dalam stegoimage ( berapa besar file,nama file, besar k-bits, dll ) dan menulisnya kembali ke bentuk pesan semula. Berikut rancangan layar pada modul pengambilan Gambar 3.4 Menu Pilih StegoImage 26 Gambar 3.5 Menu Decode 3.3 Cara Kerja Program Pada sub bab ini akan di gambarkan secara lebih rinci mengenai program steganografi ini. Pada proses penyisipan, hal yang pertama dilakukan program steganografi adalah menerima input file pesan dan cover image, dilanjutkan dengan membaca pesan dan menampungnya kedalam array, proses ini ditangani oleh ConcealControl.java. Proses dilanjutkan dengan membaca cover image, pembacaan cover image menggunakan fungsi sendiri yaitu LoadBitmapBytes.java ( di karenakan tidak adanya fungsi yang disediakan oleh java dalam membaca format bitmap ), dalam LoadBitmapBytes diambil beberapa informasi dari header ( 14 bit pada header dan 40 bit pada information header) antara lain, berapa ukuran file, berapa bit yang digunakan, ada atau tidaknya kompresi, dll, lalu ditampung kedalam array. Tahap selanjutnya adalah penyisipan pesan, proses inti ini dikerjakan oleh ConcealControl.java. Yang pertama dilakukan adalah menentukan berapa k-bit yang 27 digunakan setiap pixel pada bitmap mempunyai 3 byte ( yaitu RGB, walaupun gambar tersebut adalah hitam putih) jadi mempunyai total 24 bit, proses penyisipanpun.dimulai dengan 7 Pixel pertama digunakan untuk menyimpan keterangan mengenai pesan yang dtempelkan, dengan k-bit yang digunakan adalah k = 2. Pixel yang ke 0 digunakan untuk menyimpan keterangan berapa k- bit yang digunakan dalam menyisipkan pesan, pixel yang ke 1 digunakan untuk menyimpan keterangan berapa panjang ukuran nama file pesan, pixel yang ke 2 – 6 digunakan untuk menyimpan panjang ukuran data file pesan, pixel yang ke 7 – n digunakan untuk menyimpan nama file pesan, pixel yang ke n – m digunakan untuk menyimpan data file pesan. Pixel yang sudah disisipi pesan perlu dilakukan proses pengoptimasian dengan menggunakan metode MELSBR, yaitu dengan menghitung tingkat error dan menggunakan pixel yang mempunyai tingkat error yang lebih kecil. Proses penyisipanpun selesai dilakukan Setelah proses penyisipan selesai, pembuatan stegoimage pun dilakukan, dengan menggunakan pixel yang sudah disispi pesan. Proses ini dilakukan pada BMPFile,java. Pada proses pengambilan, dibutuhkan input file berupa stegoimage. Setelah itu proses pengambilan pun dilakukan, dengan menggunakan RevealContro.java diambil beberapa informasi penting mengenai pesan yang telah disisipi antara lain: ukuran file, nama file, k-bit yang digunakan, panjang nama file, panjang ukuran file. Pembacaan stegoimage menggunakan class yang sama seperti membaca file bitmap biasa yaitu LoadBitmapBytes.java, dengan menggunakan informasi mengenai pesan yang telah disisipi pada pixel ke 0 – 6, pengambilan bit pun dilakukan. Bit yang telah diambil dari stegoimage, dibentuk kembali menjadi file seperti aslinya, proses ini dilakukan juga pada RevealControl.java 28 Berikut merupakan diagram alir dari jalannya program dandiagram alir pada proses penyisipan dan proses pengambilan 3.4 Perancangan Diagram Alir ( flowchart ) Diagram alir adalah alat bantu pemograman yang biasanya di gunakan dalam menjelaskan cara kerja program. Berikut merupakan diagram alir dari program steganografi 29 Mulai Menu Utama Selesai Menu Penyisipan tidak Menu Pengambilan Cukup? tidak ya StegoImage? Proses Encode ya Proses Decode StegoImage Pesan Gambar 3.6 Diagram alir dari program steganografi 30 Start no Input : Messages, Cover Image no cek cover image are 24btimap? yes Determine k from capacity cover image Cek if capacity fit all the message? yes Extract bits pixel and embed data no Create new byte of pixel Transform k+1th bit Calculate error2(error transform pixel) Calculate error1(error new pixel) Create Transform byte of pixel error1<error2? no yes use new byte pixel use transform byte pixel Embed pixels to stego image is all message has been embeded yes end Gambar 3.7 Diagram alir dari proses penyisipan dengan algoritma MELSBR 31 Start Input : StegoImage no cek if stegoimage? yes Determine k from Stego image Extract bits pixel no extract data from pixel Is all mesage data has been extracted? yes save data end Gambar 3.8 Diagram alur dari proses pengambilan