47
BAB III PERANCANGAN SISTEM
3.1 Rancangan Diagram Alir Pada program aplikasi steganografi ini akan dijelaskan rancangan Diagram Alir Menu Utama, rancangan Diagram Alir Tulis pesan, dan rancangan Diagram Alir Baca Pesan.
3.1.1 Diagram Alir Menu Utama Ketika program aplikasi steganografi dijalankan, akan muncul tampilan Form Menu Utama. Pada Form Menu Utama ini terdapat tiga buah tombol, yaitu: tombol Tulis Pesan, tombol Baca Pesan, dan tombol Keluar dari program aplikasi steganografi. Ketika tombol Tulis Pesan ditekan, program akan menampilkan Form Tulis Pesan yang selanjutnya proses menulis pesan akan dilakukan pada Form ini. Selajutnya, Ketika tombol Baca Pesan ditekan, program akan menampilkan Form Baca Pesan yang selanjutnya proses membaca pesan akan dilakukan pada Form ini, dan ketika tombol Keluar ditekan, maka program akan keluar dari program aplikasi steganografi. Diagram Alir Menu Utama ini tampak seperti pada gambar di bawah.
48
Gambar 3.1: Diagram Alir Menu Utama
3.1.2 Diagram Alir Tulis Pesan Pada Form Tulis Pesan, setelah menulis pesan rahasia selanjutnya pengguna tinggal menekan tombol Tulis Pesan yang kemudian proses penyembunyian pesan dimulai. Dalam modul program ini terdapat empat proses utama yaitu: cek fleck, sisip fleck, sisip pesan, dan sisip lokasi. Langkah-langkah proses penulisan pesan berdasarkan keempat proses utama di atas, dijelaskan sebagai berikut.
49
1. Fleck adalah tanda di dalam file image berupa deretan tiga karakter yaitu @#$. Sebelum disisipi pesan, file image diperiksa dahulu oleh program apakah terdapat fleck di dalamnya, jika program menemukan fleck maka di dalam file image tersebut juga terdapat pesan rahasia. Pendeteksian fleck ini terdapat pada proses cek fleck di dalam modul program Tulis Pesan. //Cek Fleck for i:=0 to 7 do begin merah:=GetRValue(getpixel(ImageFile.Canvas.Handle,i,0)); hijau:=GetGValue(getpixel(ImageFile.Canvas.Handle,i,0)); biru:=GetBValue(getpixel(ImageFile.Canvas.Handle,i,0)); CekBiner:=CekBiner+(biner(biru))[8]+(biner(hijau))[8]+(biner(merah))[8]; end; huruf1:=chr(decimal(copy(CekBiner,1,8))); huruf2:=chr(decimal(copy(CekBiner,9,8))); huruf3:=chr(decimal(copy(CekBiner,17,8))); fleck:=huruf1+huruf2+huruf3; if fleck='@#$' then begin MessageDlg('File Gambar Sudah Berisi Pesan, Cari File Yang Lain!',mtError,[mbOK],0); ImageFile.Picture.Bitmap:=nil; MenuBacaPesan.Enabled:=True; MenuSave.Enabled:=False; BtnTulisPesan.Enabled:=False; BtnBatal.Enabled:=False; BtnCekGambar.Enabled:=False; MemoTulisPesan.Visible:=False; MemoTulisPesan.Lines.Clear; EditMaks.Clear; EditSisa.Clear; exit; end 2. Jika program tidak menemukan fleck di dalam file image, setelah proses cek fleck selesai, maka program akan meneruskan proses selanjutnya yaitu proses sisip fleck. Proses sisip fleck ini berfungsi untuk memberi tanda pada file image bahwa file image ini sudah mengandung pesan.
50
//Sisip Fleck Screen.Cursor:=CrHourGlass; fleck:='@#$'; BinerFleck:=''; n:=1; for i:=1 to 3 do BinerFleck:=BinerFleck+biner(ord(fleck[i])); z:=0; for i:=0 to 7 do begin inc(z); merah:=GetRValue(getpixel(ImageFile.Canvas.Handle,i,0)); hijau:=GetGValue(getpixel(ImageFile.Canvas.Handle,i,0)); biru:=GetBValue(getpixel(ImageFile.Canvas.Handle,i,0)); BinerMerah:=biner(merah); BinerHijau:=biner(hijau); BinerBiru:=biner(biru); delete(BinerMerah,8,1); delete(BinerHijau,8,1); delete(BinerBiru,8,1); BinerBiru:=BinerBiru+BinerFleck[n]; BinerHijau:=BinerHijau+BinerFleck[n+1]; BinerMerah:=BinerMerah+BinerFleck[n+2]; n:=n+3; MerahBaru:=decimal(BinerMerah); HijauBaru:=decimal(BinerHijau); BiruBaru:=decimal(BinerBiru); setpixelV(hdc1,i,0,RGB(MerahBaru,HijauBaru,BiruBaru)); end; 3. Setelah sisip fleck selesai, kemudian program akan melanjutkan proses selanjutnya yaitu proses sisip pesan. //Sisip Pesan pesan:=MemoTulisPesan.Lines.Text; BinerPesan:=''; PanjangText:=length(MemoTulisPesan.Lines.Text); for i:=1 to PanjangText do begin BinerPesan:=BinerPesan+biner(ord(pesan[i])); end; n:=1; for j:=1 to ImageFile.Height-1 do begin for i:=0 to ImageFile.Width-1 do
51
begin inc(z); merah:=GetRValue(getpixel(ImageFile.Canvas.Handle,i,j)); hijau:=GetGValue(getpixel(ImageFile.Canvas.Handle,i,j)); biru:=GetBValue(getpixel(ImageFile.Canvas.Handle,i,j)); BinerMerah:=biner(merah); BinerHijau:=biner(hijau); BinerBiru:=biner(biru); delete(BinerMerah,8,1); delete(BinerHijau,8,1); delete(BinerBiru,8,1); BinerBiru:=BinerBiru+BinerPesan[n]; BinerHijau:=BinerHijau+BinerPesan[n+1]; BinerMerah:=BinerMerah+BinerPesan[n+2]; n:=n+3; MerahBaru:=decimal(BinerMerah); HijauBaru:=decimal(BinerHijau); BiruBaru:=decimal(BinerBiru); setpixelV(hdc1,i,j,RGB(MerahBaru,HijauBaru,BiruBaru)); if n>length(BinerPesan) then break; end; if n>length(BinerPesan) then break; end; 4. Setelah proses sisip pesan selesai, program akan melanjutkan proses terakhir dalam modul proses Tulis Pesan yaitu proses sisip lokasi. Proses sisip lokasi ini adalah proses memasukkan informasi tempat baris dan kolom terakhir di mana pesan rahasia disisipkan di dalam file image. Informasi ini berguna agar dalam proses pemisahan pesan rahasia dari file image, program bisa tepat dalam mengambil bit-bit biner pesan yang telah habis diambil oleh program. //Sisip Baris InfoBaris:=j; BinerBaris:=biner16(InfoBaris); n:=1; for x:=8 to 15 do begin inc(z); biru:=GetBValue(getpixel(ImageFile.Canvas.Handle,x,0));
52
hijau:=GetGValue(getpixel(ImageFile.Canvas.Handle,x,0)); merah:=GetRValue(getpixel(ImageFile.Canvas.Handle,x,0)); BinerHijau:=biner(hijau); BinerMerah:=biner(merah); delete(BinerHijau,8,1); delete(BinerMerah,8,1); BinerHijau:=BinerHijau+BinerBaris[n]; BinerMerah:=BinerMerah+BinerBaris[n+1]; HijauBaru:=decimal(BinerHijau); MerahBaru:=decimal(BinerMerah); n:=n+2; setpixelV(ImageFile.Canvas.Handle,x,0,RGB (MerahBaru,HijauBaru,biru)); end; //Sisip Kolom InfoKolom:=i; BinerKolom:=biner16(InfoKolom); n:=1; for x:=16 to 23 do begin inc(z); biru:=GetBValue(getpixel(ImageFile.Canvas.Handle,x,0)); hijau:=GetGValue(getpixel(ImageFile.Canvas.Handle,x,0)); merah:=GetRValue(getpixel(ImageFile.Canvas.Handle,x,0)); BinerHijau:=biner(hijau); BinerMerah:=biner(merah); delete(BinerHijau,8,1); delete(BinerMerah,8,1); BinerHijau:=BinerHijau+BinerKolom[n]; BinerMerah:=BinerMerah+BinerKolom[n+1]; HijauBaru:=decimal(BinerHijau); MerahBaru:=decimal(BinerMerah); n:=n+2; setpixelV(ImageFile.Canvas.Handle,x,0,RGB (MerahBaru,HijauBaru,biru)); end; Diagram alir untuk proses menulis pesan rahasia dari keempat proses utama di atas, terlihat seperti gambar di bawah ini.
53
Mulai
Cek Gambar
Ya
Tidak
Gambar berisi pesan?
Tuliskan Pesan!
Tidak
Ya Tulis Pesan/ batal?
Proses Tulis Pesan
Simpan
Pindah ke form Baca Pesan?
Tidak
Ya
Diproses di form Baca Pesan
Selesai
Gambar 3.2: Diagram Alir Tulis Pesan
54
3.1.3 Diagram Alir Baca Pesan Dalam memisahkan pesan rahasia dari file image, modul program Baca Pesan menggunakan tiga proses utama yang dieksekusi secara berurutan yaitu, cek fleck, ambil lokasi, dan ambil pesan. Langkah-langkah proses penulisan pesan berdasarkan ketiga proses utama di atas, dijelaskan sebagai berikut. 1. Modul program Baca Pesan diawali oleh cek fleck yaitu proses yang memeriksa keberadaan fleck pada file image. //Cek Fleck for i:=0 to 7 do begin merah:=GetRValue(getpixel(ImageFile.Canvas.Handle,i,0)); hijau:=GetGValue(getpixel(ImageFile.Canvas.Handle,i,0)); biru:=GetBValue(getpixel(ImageFile.Canvas.Handle,i,0)); CekBiner:=CekBiner+(biner(biru))[8]+(biner(hijau))[8]+(biner(merah))[8]; end; huruf1:=chr(decimal(copy(CekBiner,1,8))); huruf2:=chr(decimal(copy(CekBiner,9,8))); huruf3:=chr(decimal(copy(CekBiner,17,8))); fleck:=huruf1+huruf2+huruf3; if fleck='@#$' then 2. Jika program tidak menemukan fleck pada file image dalam proses cek fleck, maka program akan berhenti dan akan menampilkan sebuah message dialog yang berisi bahwa file image tidak berisi pesan. Tetapi jika program menemukan fleck dalam file image, maka modul program Baca Pesan ke proses selanjutnya yaitu proses ambil lokasi. Proses ambil lokasi ini adalah proses pengambilan informasi tempat baris dan kolom terakhir di mana pesan rahasia disisipkan di dalam file image. Informasi lokasi ini berguna agar dalam proses pemisahan pesan rahasia dari file image, program bisa tepat dalam mengambil bit-bit biner pesan, sehingga program bisa berhenti ketika bit-bit
55
biner pesan telah habis diambil oleh program. Informasi baris dan kolom terakhir ini berfungsi sebagai pembatas dalam looping pada proses ambil pesan, sehingga ketika sampai pada baris dan kolom terakhir proses ambil pesan bisa berhenti. //Ambil Info Baris BinerBaris:=''; for i:=8 to 15 do begin merah:=GetRValue(getpixel(ImageFile.Canvas.Handle,i,0)); hijau:=GetGValue(getpixel(ImageFile.Canvas.Handle,i,0)); BinerBaris:=BinerBaris+(biner(hijau))[8]+(biner(merah))[8]; end; InfoBaris:=decimal(BinerBaris); //Ambil Info Kolom BinerKolom:=''; for i:=16 to 23 do begin merah:=GetRValue(getpixel(ImageFile.Canvas.Handle,i,0)); hijau:=GetGValue(getpixel(ImageFile.Canvas.Handle,i,0)); BinerKolom:=BinerKolom+(biner(hijau))[8]+(biner(merah))[8]; end; InfoKolom:=decimal(BinerKolom); 3. Setelah proses ambil lokasi selesai dan mendapatkan hasil berupa informasi baris dan kolom terakhir penyisipan pesan, maka program akan melanjutkan proses selanjutnya yaitu proses ambil pesan. Proses ambil pesan ini adalah proses inti pemisahan pesan rahasia dari file image, sekaligus menampilkan pesan rahasia tersebut ke dalam Form Baca Pesan sehingga pesan rahasia bisa dibaca oleh pengguna. Looping proses ini akan berhenti ketika sampai pada baris dan kolom terakhir penyisipan pesan yang informasinya didapat dari proses ambil lokasi, setelah looping berhenti kemudian program akan menampilkan pesan rahasia ke dalam Form Baca Pesan.
56
//Ambil Pesan Dari Gambar BinerPesan:=''; begin total:=(ImageFile.Width*(InfoBaris-1))+InfoKolom+1; for j:=1 to ImageFile.Height-1 do begin for i:=0 to ImageFile.Width-1 do begin inc(z); biru:=GetBValue(getpixel(ImageFile.Canvas.Handle,i,j)); hijau:=GetGValue(getpixel(ImageFile.Canvas.Handle,i,j)); merah:=GetRValue(getpixel(ImageFile.Canvas.Handle,i,j)); BinerBiru:=biner(biru); BinerHijau:=biner(hijau); BinerMerah:=biner(merah); BinerPesan:=BinerPesan+copy(BinerBiru,8,1)+ copy(BinerHijau,8,1)+copy(BinerMerah,8,1); if (j=InfoBaris) and (i=InfoKolom) then break; end; if (j=InfoBaris) and (i=InfoKolom) then break; end; n:=1; pesan:=''; for i:=1 to (round(length(BinerPesan)/8)) do begin inc(z); pesan:=pesan+chr(decimal(copy(BinerPesan,n,8))); n:=n+8; end; MenuTulisPesan.Enabled:=True; MemoBacaPesan.Visible:=True; MemoBacaPesan.Lines.Text:=pesan; Screen.Cursor:=crdefault; end; Diagram alir untuk proses membaca pesan rahasia dari ketiga proses utama di atas, terlihat seperti gambar di bawah ini.
57
Gambar 3.3: Diagram Alir Baca Pesan
58
3.2 Rancangan Antarmuka (User Interface) Rancangan sistem aplikasi steganografi kali ini yaitu akan merancang rancangan antarmuka (User Interface), di mana rancangan yang akan dibuat terdiri dari empat rancangan antarmuka, yaitu: rancangan antarmuka menu utama, rancangan antarmuka tulis pesan, rancangan antarmuka baca pesan, dan rancangan antarmuka about. Keempat rancangan antarmuka tersebut secara rinci akan dibahas seperti penjelasan berikut ini.
3.2.1 Rancangan Antarmuka Menu Utama Antarmuka menu utama ini merupakan antarmuka yang pertama kali muncul pada aplikasi. Pada antarmuka menu utama ini terdapat tiga buah tombol yang menghubungkan ke proses selanjutnya yaitu tombol Tulis Pesan yang jika diklik akan masuk ke antarmuka Tulis Pesan, tombol Baca Pesan yang jika diklik akan masuk ke antarmuka Baca Pesan, dan tombol Keluar yang jika diklik akan keluar dari aplikasi. Tampilan rancangan antarmuka Form Menu Utama dapat dilihat pada gambar di bawah ini.
Gambar 3.4: Rancangan Antarmuka Menu Utama
59
3.2.2 Rancangan Antarmuka Tulis Pesan Rancangan antarmuka tulis pesan merupakan antarmuka untuk proses penyembunyian pesan. Dalam antarmuka tulis pesan ini terdapat komponen image yang dipakai untuk menempatkan file image sebagai file untuk disisipi pesan rahasia, komponen Memo yang dipakai untuk menempatkan penulisan pesan rahasia, tombol Batal digunakan untuk membatalkan penulisan pesan pada Memo, tombol Tulis Pesan yang jika diklik akan memulai proses penyembunyian pesan. Tampilan rancangan antarmuka Form Tulis Pesan dapat dilihat pada gambar di bawah ini.
Gambar 3.5: Rancangan Antarmuka Tulis Pesan
3.2.3 Rancangan Antarmuka Baca Pesan Rancangan antarmuka baca pesan merupakan antarmuka untuk proses pemisahan pesan rahasia dari file image dan antarmuka untuk membaca pesan rahasia. Pada antarmuka baca pesan ini terdapat komponen Image yang dipakai untuk menempatkan file image yang sudah disisipi pesan rahasia, komponen
60
Memo yang dipakai untuk menempatkan pesan rahasia uang akan dibaca, tombol Baca Pesan yang jika diklik akan memulai proses pemisahan pesan rahasia dari file image. Tampilan rancangan antarmuka Form Baca Pesan dapat dilihat pada gambar di bawah ini.
Gambar 3.6: Rancangan Antarmuka Baca Pesan
3.2.4 Rancangan Antarmuka About Rancangan antarmuka about digunakan untuk menjelaskan mengenai aplikasi steganografi. Form about merupakan bagian dari menu Help. Tampilan rancangan antarmuka Form about dapat dilihat pada gambar di bawah ini.
Gambar 3.7: Rancangan Antarmuka About