Aplikasi Steganografi dengan Metode LSB dan Enkripsi Pesan dengan Pembangkitan Bilangan Acak Bahasa Indonesia
2015
Agung Sulistyanto Laboratorium ICT Terpadu Universitas BUDI LUHUR
7/24/2015
Aplikasi Steganografi dengan Metode LSB dan Enkripsi Pesan dengan Pembangkitan Bilangan Acak by Laboratorium ICT Terpadu is licensed
under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
ikatlah ilmu dengan menuliskannya
Bab 1 – Pengenalan Teori 1
Pengenalan Dasar Citra
1.1 Pengertian Pengolahan Citra Digital
Secara umum pengolahan citra digital adalah “pemrosesan gambar berdimensi-dua melalui komputer digital” (Jain, 1998), menurut Efford (2000) pengolahan citra adalah istilah umum untuk berbagi teknik yang keberadaannya untuk memanipulasi
dan memodifikasi citra dengan berbagai cara. Foto adalah contoh dari citra yang dapat diolah dengan mudah. Foto dapat dimodifikasi dan diolah menggunakan software tertentu, misalnya pada saat foto hasil bidikan kamera digital terlihat
kurang cerah maka dapat dilakukan pencerahan pada gambar tersebut atau mungkin pada saat kita akan mengambil suatu bagian dari foto tersebut maka dapat
dilakukan cropping. Tentunya masih banyak lagi yang dapat dilakukan dalam proses pengolahan citra.
1.2 Representasi Citra Digital
Citra digital dibentuk oleh kumpulan titik yang disebut piksel, setiap titik terkecil dalam gambar (piksel) memiliki koordinat posisi. Sistem koordinat ditunjukan pada
contoh gambar berikut.
Sebuah piksel memiliki koordinat berupa (x,y) dalam hal ini, x menyatakan posisi kolom dan y menyatakan posisi baris. Sebagai contoh, citra berukuran 12 x 12 pada
gambar memiliki susunan data seperti terlihat pada gambar. Berdasarkan gambar tersebut maka :
1. f(2,1) bernilai 89. 2. f(4,7) bernilai 6.
ikatlah ilmu dengan menuliskannya
Bab 1 – Pengenalan Teori 2
Megapixel (Megapiksel) adalah gabungan jutaan piksel yang terdapat dalam gambar, semakin tinggi jumlahnya maka semakin tinggi juga resolusi gambarnya. Jumlah
megapiksel biasanya digunakan untuk menunjukan kerapatan gambar.
1.3 Kuantitas Citra
Citra digital dibentuk melalui pendekatan kuantitas. Pada isyarat digital, nilai intensitas citra dibuat diskret atau terkuantisasi dalam sejumlah nilai bulat. Gambar menunjukan contoh citra biner dua nilai intensitas berupa 0 (hitam) dan 1 (putih).
Selanjutnya gambar tersebut ditumpangkan pada grid 8 x 8 seperti terlihat pada gambar.
Pada bagian gambar yang jatuh pada kotak, jika mayoritas warna putih maka seluruh isi kotak dibuat putih. Sebaliknya, jika mayoritas berwarna hitam, isi kotak
seluruhnya diberi warna hitam. Hasil pengubahan ke citra digital tampak pada gambar.
ikatlah ilmu dengan menuliskannya
Bab 1 – Pengenalan Teori 3
Gambar memperlihatkan bilangan yang mewakili warna hitam (0) dan putih (1).
Untuk gambar yang mengandung unsur warna pada prinsipnya sama saja, namun
sebagai pengecualian untuk warna hitam diberikan 3 (tiga) unsur warna dasar, yaitu merah (R = Red), hijau (G = Green) dan biru (B = Blue) atau sering dikenal dengan istilah warna RGB. Seperti halnya pada citra biner (monokrom), dengan variasi
intensitas dari 0 – 255 pada citra berwarna terdapat 16.777.216 variasi warna apabila setiap komponen RGB mengandung 256 aras intensitas. Namun, kepekaan
mata manusia untuk membedakan macam warna sangat terbatas tentunya jauh di bawah dari angka 16.777.216 tersebut.
Berikut contoh penggunaan citra beraras keabuan dan citra berwarna (RGB) dalam
beberapa keperluan tertentu.
Komponen
Warna Bit per Piksel Jangkauan Penggunaan
1 1 0-1
Citra biner : dokumen faksimili
8 0-255 Umum : foto dan hasil pemindai
12 0-4095 Kualitas tinggi : foto dan hasil pemindai
14 0-16383 Kualitas professional : foto dan hasil pemindai
16 0-65535 Kualitas tertinggi : citra
ikatlah ilmu dengan menuliskannya
Bab 1 – Pengenalan Teori 4
kedokteran dan
astronomi
Komponen
Warna Bit per Piksel Jangkauan Penggunaan
3 24 0-255 RGB umum
36 0-4095 RGB kualitas tinggi
42 0-16383 RGB kualitas professional
4 32 0-255 CMYK (cetakan digital)
1.4 Kualitas Citra Selain intensitas kecerahan, jumlah piksel yang digunakan mempengaruhi kualitas
citra. Istilah resolusi citra biasa dinyatakan dengan jumlah piksel pada arah lebar dan tinggi. Contoh pada gambar menunjukan perbedaan resolusi yang digunakan, tentunya semakin tinggi resolusinya akan menampilkan citra yang semakin mirip
dengan aslinya dan semakin rendah resolusinya menjadikan citra semakin kabur.
1.5 Jenis Citra
Terdapat 3 (tiga) jenis citra yang umum digunakan dalam pengolahan citra, diantaranya adalah :
a. Citra Biner (monokrom) Citra biner adalah citra dengan setiap pikselnya hanya dinyatakan dengan
sebuah nilai 0 (nol) dan 1 (satu). Nilai 0 (nol) menyatakan warna hitam dan 1 (satu) menyatakan warna putih.
b. Citra Berskala Keabuan (grayscale)
Citra ini menangani gradasi warna hitam dan putih, yang menghasilkan efek warna abu-abu. Warna dinyatakan dengan intensitas, intensitas berkisar
antara 0 – 255 atau 8 (delapan) bit. Nilai 0 menyatakan hitam dan nilai 255 menyatakan putih.
c. Citra Berwarna (RGB) Citra berwarna merupakan jenis citra yang menyajikan warna dalam
komponen R (Red), G (Green) dan B (Blue). Setiap komponen warna menggunakan 8 (delapan) bit nilainya berkisar antara 0 – 255. Dengan demikian, kemungkinan warna yang dapat disajikan mencapai 256 x 256 x
256 atau 16.777.216 warna.
Warna R G B
Merah 255 0 0
Hitam 0 0 0
ikatlah ilmu dengan menuliskannya
Bab 1 – Pengenalan Teori 5
Kuning 0 255 255
Hijau 0 255 0
RGB disebut juga ruang warna yang dapat divisualisasikan sebagai sebuah
kubus seperti pada gambar, dengan tiga sumbunya yang mewakili komponen
warna merah (Red), hijau (Green), dan biru (Blue).
1.6 Format pada Citra
a. Bitmap (BMP) Bitmap adalah representasi dari citra grafis yang terdiri dari susunan titik yang tersimpan di memori komputer yang dikembangkan oleh Microsoft. Kerapatan
titik-titik dinamakan resolusi, untuk menampilkan citra bitmap pada monitor atau printer, komputer menerjemahkan bitmap menjadi pixel (pada layar) atau titik tinta (pada printer). Bitmat menggunakan kompresi tipe lossless.
b. Joint Photographic Experts Group (JPEG) JPG/JPEG merupakan skema kompresi file bitmap. Awalnya, file yang
menyimpan hasil foto digital memiliki ukuran yang besar setelah berhasil dikompresi (dimampatkan) sehingga ukurannya kecil. JPEG menggunakan kompresi tipe lossy.
c. Graphics Interchange Format (GIF) GIF merupakan format grafis yang paling sering digunakan untuk keperluan
desain website. GIF memiliki kombinasi warna lebih sedikit dibanding JPEG, namun mampu menyimpan grafis dengan latar belakang transparan ataupun
dalam bentuk animasi sederhana. GIF menggunkan kompresi tipe lossless.
ikatlah ilmu dengan menuliskannya
Bab 1 – Pengenalan Teori 6
Steganografi
2.1 Steganografi
Steganografi (steganography) adalah ilmu dan seni menyembunyikan pesan rahasia
(hidding message) sehingga keberadaan pesan tidak terdeteksi oleh indra manusia. Kata steganografi berasal dari bahasi Yunani steganos yang berarti “tersembunyi” atau “terselubung” dan graphein yang berarti “menulis”.
2.2 Properti Steganografi Dalam Steganografi digital menggunakan media digital sebagai wadah
penampungnya, misalnya : teks, citra gambar, audio dan video. Dalam penerapannya steganografi terdiri dari beberapa properti penyusun, diantaranya :
1. Embedded message (hiddenext) : pesan yang disembunyikan.
2. Cover-object (covertext) : pesan yang digunakan untuk menyembunyikan embedded message.
3. Stego-object (stegotext) : pesan yang sudah berisi pesan rahasia (Embedded message + Stego-object).
4. Stego-key : kunci yang digunakan untuk menyisipkan pesan dan
mengekstraksi pesan dari stego-object.
Contoh properti steganografi :
1. Stegotext :
Lupakan Asal Rumor Itu, Jaga Agar Matamu Sehat Atau Turunkan Ubanmu.
2. Hiddentext :
LARI JAM SATU
3. Covertext :
upakan sal umor tu, aga gar atamu ehat tau urunkan banmu.
Encoding
(embeddin)
covertext
hiddentext
key
Decoding
(extraction)
stegotext
key
hiddentext
covertext
ikatlah ilmu dengan menuliskannya
Bab 1 – Pengenalan Teori 7
Kriptografi
Kriptografi secara umum dapat diartikan sebagai ilmu atau seni untuk menjaga
kerahasiaan data. Kriptografi (cryptography) berasal dari bahasa yunani cryptos
yang artinya “rahasia” dan graphein yang berarti “menulis”. Pesan-pesan yang
belum di kodekan disebut plainteks dan pesan-pesan yang telah di kodekan disebut
chipherteks. Dalam kriptografi dikenal dengan 2 (dua) proses, enkripsi mengubah
pesan asli (plainteks) menjadi data sandi (chipherteks) dan dekripsi adalah proses
mengembalikan cipherteks menjadi plainteks.
3.1 Tujuan Kriptografi
1. Kerahasiaan, adalah layanan yang digunakan untuk menjaga isi dari informasi
pada pesan dari siapapun kecuali yang memiliki otoritas untuk membuka
informasi yang telah disandi.
2. Integritas data, adalah berhubungan dengan penjagaan dari perubahan data
secara tidak sah. Untuk menjaga integritas data sistem harus memiliki
kemampuan untuk mendeteksi manipulasi data oleh pihak-pihak yang tidak
berhak, antara lain penyisipan, penghapusan, dan pensubtitusian data lain
kedalam data yang sebenarnya.
3. Autentikasi, adalah berhubungan dengan identifikasi / pengenalan, baik
secara kebenaran pihak-pihak yang berkomunikasi maupun mengidentifikasi
kebenaran sumber pesan.
4. Non-repudiasi, atau nirpenyangkalan adalah usaha untuk mencegah
terjadinya penyangkalan terhadap pengiriman/terciptanya suatu informasi
oleh yang mengirimkan/membuat.
Sebagai contoh ada seorang agen rahasia bernama Alif yang akan melaporkan hasil
kerjanya kepada pimpinannya bernama Tito. Isi pesan yang dikirimkan Alif kepada
Tito tidak boleh di ketahui oleh orang lain (Kerahasiaan). Tito harus dapat
memastikan bahwa pengirim pesan adalah Alif (Autentikasi). Pesan yang dikirimkan
Alif harus sama isinya dengan pesan yang diterima Tito, pihak lain tidak dapat
mengganti pesan Alif (Integritas Data). Alif juga tidak dapat menyagkal bahwa telah
mengirimkan pesan kepada Tito (Non-repudiasi).
3.2 Jenis Kunci Kriptografi
Berdasarkan jenis kunci yang digunakannya, algoritma kriptografi dikelompokan
menjadi 2 (dua), diantaranya :
ikatlah ilmu dengan menuliskannya
Bab 1 – Pengenalan Teori 8
a. Algoritma Simetris
Algortma ini disebut juga algoritma konvensional yang menggunakan kunci
yang sama pada proses enkripsi dan dekripsinya.
b. Algoritma Asimetris
Sebutan Asimetris (tidak simetris) berarti menjelaskan perbedaan kunci yang
digunakan dalam proses enkripsi dan dekripsi. Kunci publik (public key)
digunakan untuk enkripsi dan kunci private (private key) digunakan untuk
proses dekripsi.
3.3 Bilangan Acak
Bilangan acak adalah bilangan yang tidak dapat diprediksi, bilangan acak (random)
banyak digunakan dalam kriptografi. Bilangan acak yang dihasilkan dengan rumus
matematika adalah bilangan acak semu (pseudo), karena pembangkitan bilangannya
dapat diulangi kembali. Pembangkitan bilangan acak semacam ini disebut pseudo
random number generation (PRNG).
a. Linear Congruential Generator (LGC)
Pembangkitan bilangan acak kongruen-lanjar (linear congruential generator)
adalah merupakan salah satu PRNG tertua dan paling terkenal.
Xn = (aXn – 1 + b) mod m
Penjelasan :
Xn = bilangan acak ke-n dari deretnya
ikatlah ilmu dengan menuliskannya
Bab 1 – Pengenalan Teori 9
a = factor pengali
Xn – 1 = bilangan acak sebelumnya
b = increment
m = modulus
3.4 Perbedaan Steganografi dan Kriptografi
Perbedaan yang mendasar antara steganografi dan kriptografi adalah pada hasil
keluarannya. Hasil dari kriptografi adalah data yang berbeda dari aslinya sehingga
data tersebut seolah-olah menjadi berantakan. Sedangkan hasil dari steganografi
memiliki bentuk persepsi yang sama dengan bentuk data awalnya. Pada teknik
kriptografi orang lain dapat menyadari bahwa file tersebut adalah sebuah pesan
yang terenkripsi sehingga dapat menimbulkan kecurigaan, berbeda dengan teknik
steganografi karena hasil keluaran memiliki bentuk persepsi sama sehingga tidak
akan menimbulkan kecurigaan.
ikatlah ilmu dengan menuliskannya
Bab 1 – Pengenalan Teori 10
Pengenalan Algoritma LSB
4.1 Pengertian LSB (Least Significant Bit)
Bit atau binary digit adalah unit dasar penyimpanan data di dalam komputer, nilai bit suatu data adalah 0 (nol) atau 1 (satu). Semua data di dalam komputer di simpan
kedalam satuan bit, termasuk gambar, suara maupun video. Format pewarnaan di dalam citra gambar seperti monochrome, grayscale, RGB, CMYK juga menggunakan satuan bit dalam penyimpanannya. Sebagai contoh pewarnaan monochrome bitmap
(menggunakan 1 bit untuk setiap pikselnya), RGB – 24 bit (8 bit red, 8 bit green, 8 bit blue), grayscale menggunakan 8 bit untuk menentukan tingkat kehitaman suatu piksel.
LSB (Least Significant Bit) adalah bagian dari barisan data biner yang mempunyai nilai paling tidak berarti / paling kecil. Bit LSB letaknya di paling kanan pada barisan
bit. Sedangkan MSB (Most Significant Bit) adalah kebalikan dari LSB, yaitu bit yang mempunyai nilai sangat berarti / paling besar, letaknya di paling kiri pada barisan bit. Sebagai contoh barisan biner angka 27 :
256 128 64 32 16 8 4 2 1
1 1 0 1 1
Berdasarkan barisan angka biner di atas, angka 1 di paling kanan bernilai 1 yang berarti nilai yang paling kecil (LSB). Sedangkan angka 1 di paling kiri bernilai 16 yang berarti nilai yang paling besar dari barisan bit tersebut (MSB). Pada algoritma
LSB bit pesan akan disisipkan pada bit akhir setiap piksel gambar. Pada citra 24 bit, setiap pikselnya terdiri dari 3 byte yang merepresentasikan setiap byte untuk warna RGB. Sebagai contoh dalam gambar berukuran 600 x 500 piksel dapat disisipkan
pesan sebanyak 600 x 500 x 3 = 900000 bit pesan, atau dengan kata lain dapat disisipkan 900000 / 8 = 112500 byte pesan yang dapat disisipkan.
4.2 Contoh Algortima LSB (Least Significant Bit)
Sebagai contoh gambar di bawah ini menggunakan format grayscale, artinya setiap
piksel dari gambar ini direpresentasikan dengan nilai 8 bit.
ikatlah ilmu dengan menuliskannya
Bab 1 – Pengenalan Teori 11
Di misalkan data berupa text “secret” akan disisipkan ke dalam gambar tersebut.
Jika direpresentasikan ke dalam binary kata “secret” menjadi :
Karakter ASCII Hexadecimal Binary
s 115 73 01110011
e 101 65 01100101
c 99 63 01100011
r 114 72 01110010
e 99 63 01100011
t 116 74 01110100
Sesuai dengan namanya, LSB artinya bit yang tidak signifikan / tidak mempunyai pengaruh yang besar, maka metode ini mengganti nilai bit ke-8 gambar Lena untuk menyisipkan data.
Media lena.jpg
00000000 00000000 00000001 00000001 00000001 00000001 00000001 00000001
00000000 00000000 00000001 00000001 00000001 00000001 00000001 00000001
00000000 00000000 00000001 00000001 00000001 00000001 00000001 00000001
00000001 00000001 00000010 00000010 00000010 00000011 00000011 00000011
00000001 00000001 00000010 00000010 00000010 00000011 00000011 00000011
00000001 00000001 00000010 00000010 00000010 00000011 00000011 00000011
Data yang akan disisipkan :
0 1 1 1 0 0 1 1
0 1 1 0 0 1 0 1
0 1 1 0 0 0 1 1
0 1 1 1 0 0 1 0
0 1 1 0 0 0 1 1
0 1 1 1 0 1 0 0
ikatlah ilmu dengan menuliskannya
Bab 1 – Pengenalan Teori 12
Hasil stego :
00000000 00000001 00000001 00000001 00000000 00000000 00000001 00000001
00000000 00000001 00000001 00000000 00000000 00000001 00000000 00000001
00000000 00000001 00000001 00000000 00000000 00000000 00000001 00000001
00000000 00000001 00000011 00000011 00000010 00000010 00000011 00000010
00000000 00000001 00000011 00000010 00000010 00000010 00000011 00000011
00000000 00000001 00000011 00000011 00000010 00000011 00000010 00000010
Setelah dikontruksi kembali berdasarkan representasi binernya, gambar lena akan menjadi gambar yang telah disisipkan pesan rahasia namun tidak akan memiliki perbedaan jauh dengan gambar aslinya, karena yang diubah hanya bit paling akhir
dari representasi biner gambar aslinya sehingga perubahannya tidak disadari oleh mata manusia.
ikatlah ilmu dengan menuliskannya
Bab 1 – Pengenalan Teori 13
Sistem Bilangan
Sistem Bilangan adalah simbol yang digunakan untuk mewakili besaran dari suatu item fisik. Sistem Bilangan menggunakan suatu bilangan dasar tertentu. Dalam ilmu
komputer terdapat 4 (empat) jenis Sistem Bilangan, diantaranya : Desimal (basis 10), Biner (basis 2), Oktal (basis 8) dan Hexadesimal (basis 16).
5.1 Bilangan Desimal (basis 10)
Desimal adalah sistem bilangan yang paling umum digunakan dalam kehidupan
sehari-hari. Sistem bilangan Desimal menggunakan basis 10 dan menggunakan 10 macam simbol bilangan, yaitu : 0, 1, 2, 3, 4, 5, 6, 7, 8 dan 9. Sistem bilangan Desimal dapat berupa integer desimal (decimal integer) dan pecahan desimal
(decimal fraction). Sebagai contoh desimal 8299 dapat diartikan :
Absolute value adalah nilai mutlak dari masing-masing digit bilangan. Sedangkan Position value adalah nilai penimbang atau bobot dari masing-masing digit bilangan tergantung pada basis dan urutan posisinya.
5.2 Bilangan Biner (basis 2)
Biner adalah bilangan yang terdiri dari 2 simbol 0 dan 1. Sistem bilangan biner merupakan dasar dari semua sistem bilangan berbasis digital. Bilangan biner dapat
dikonversi ke dalam bilangan desimal, bilangan oktal dan bilangan hexadesimal, sebagai contoh bilangan biner dikonversi kedalam bentuk desimal :
ikatlah ilmu dengan menuliskannya
Bab 1 – Pengenalan Teori 14
Position value dalam bilangan biner merupakan perpangkatan dari nilai 2, seperti
pada table berikut :
5.3 Bilangan Oktal (basis 8)
Oktal adalah bilangan yang terdiri dari 8 simbol, yaitu 0, 1, 2, 3, 4, 5, 6, dan 7.
Contoh oktal 1022 di konversikan kedalam bilangan desimal menjadi seperti berikut :
ikatlah ilmu dengan menuliskannya
Bab 1 – Pengenalan Teori 15
Position value dalam bilangan oktal merupakan perpangkatan dari nilai 8, seperti
pada table berikut :
5.4 Bilangan Hexadesimal (basis 16)
Hexa berarti 6 dan desimal berarti 10, Hexadesimal adalah bilangan yang terdiri dari 16 simbol, yaitu : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A(10), B(11), C(12), D(13), E(14), F(15). Contoh hexadesimal F3D4 dikonversi kedalam bilangan desimal menjadi
seperti berikut :
Position value dalam bilangan oktal merupakan perpangkatan dari nilai 16, seperti pada table berikut :
ikatlah ilmu dengan menuliskannya
Bab 2 – Dasar Pemrograman Java 16
Pengenalan Java
6.1 Sejarah Java
Java adalah bahasa pemrograman karya Sun Microsystem Inc, mulai dikembangkan
pada tahun 1991 oleh James Gosling dan Patrick Naughton. Awalnya Java dibuat untuk perangkat konsumer seperti TV Kabel yang tidak memiliki banyak memori, sehingga Java memiliki karakteristik berukuran kecil. Java di tuntut harus netral
pada arsitektur manapun, proyek ini diberi nama kode “Green”. Mulanya bahasa Java diberinama “OAK” kemudian diganti “Java” karena nama “OAK” sudah pernah
digunakan sebelumnya. Java mulai popular pada tahun 1995 setelah Netscape memutuskan untuk membuat browser dilengkapi dengan Java, setelah itu diikuti oleh IBM, Symantec dan Microsoft.
6.2 Keunggulan Java a. Bahasa sederhana
Java dirancang agar mudah dipelajari dan digunakan secara efektif. Semudah C seampuh C++ sehingga cenderung lebih mudah.
b. Berorientasi Objek Pada Orientasi Objek, program sebagai sekelompok objek yang saling berinteraksi secara independen.
c. Tangguh
Java interpreter memeriksa semua akses sistem yang dilakukan, sehingga tidak akan menyebabkan crash terhadap sistem. Dengan mekanisme exception-handling kesalahan serius dapat ditangkap dan dikelola tanpa
beresiko membuat sistem menjadi down.
d. Bersifat Multithreading
Dapat mengerjakan beberapa proses dalam waktu yang hampir bersamaan.
e. Bersifat Multiplatform
Karena Java menggunakan intepreter Java Virtual Machine (JVM), menjadikan bytecode yang di hasilkan dapat berjalan di banyak platform.
f. Didukung Garbage Collector Garbage Collector berfungsi untuk mendealokasikan memori yang tidak diperlukan secara otomatis.
ikatlah ilmu dengan menuliskannya
Bab 2 – Dasar Pemrograman Java 17
Dasar Pemrograman Java Pada bab ini akan dibahas dasar pemrograman Java sebagai pendukung sebelum
masuk ke tahapan implementasi algoritma LSB pada pemrograman Java.
7.1 Pengertian Kelas, Objek, dan Instance
a. Kelas
Kelas (class) merupakan blueprint atau cetakan yang berisi kumpulan
informasi (aturan) tentang karakteristik (data) dan tingkah laku (metode)
yang akan dimiliki oleh objek.
b. Objek
Objek adalah kesatuan entitas (benda) yang memiliki sifat karakteristik dan
fungsi yang merupakan representasi dari sebuah kelas.
c. Instance
Instance adalah proses perwujudan kelas menjadi objek. Dalam
pemrograman Java untuk melakukan Instance menggunakan keyword new.
7.2 Struktur Kontrol Java
Eksekusi pada program umumnya dilakukan dari baris atas ke baris bawah, struktur kontrol akan mengatur eksekusi program dengan menggunakan pengambilan keputusan berupa perulangan dan percabangan yang memungkinkan program
dalam kondisi untuk mengeksekusi blok program tertentu.
ikatlah ilmu dengan menuliskannya
Bab 2 – Dasar Pemrograman Java 18
7.2.1 Struktur Kontrol Percabangan
Percabanagan adalah suatu pilihan yang dijalankan berdasarkan kondisi tertentu. Jika kondisi terpenuhi (true) maka terdapat pilihan yang dijalankan, sebaliknya jika
kondisi tidak terpenuhi (false) maka pilihan tersebut tidak dijalankan. Terdapat 3 (tiga) jenis percabangan diantaranya : IF-THEN, IF-THEN-ELSE, SWITCH-CASE.
a. IF-THEN Pernyataan IF akan menyatakan bagian program yang akan di eksekusi jika dan hanya jika kondisi bernilai benar.
b. IF-THEN-ELSE
Pernyataan IF-THEN-ELSE digunakan apabila akan mengeksekusi bagian
program dengan kondisi benar dan yang lain masuk ke dalam kondisi salah.
c. Nested IF
Pada dasarnya Nested IF sama dengan IF-THEN ataupun IF-THEN-ELSE, Nested IF terjadi ketika terdapat statemen IF di dalam statement IF atau sering disebut juga kondisi IF bersarang (Nested IF).
ikatlah ilmu dengan menuliskannya
Bab 2 – Dasar Pemrograman Java 19
d. SWITCH-CASE Switch akan membentuk cabang untuk beberapa kondisi dari nilai yang di
gunakan.
7.2.2 Struktur Kontrol Perulangan
Perulangan adalah suatu statement yang dapat di jalankan secara berulang-ulang sampai berhenti pada kondisi tertentu. Terdapat 3 (tiga) jenis perulangan,
diantaranya : FOR, WHILE, DO-WHILE.
ikatlah ilmu dengan menuliskannya
Bab 2 – Dasar Pemrograman Java 20
a. FOR
b. WHILE
c. DO-WHILE
7.3 Pernyataan Percabangan Pernyataan percabangan mengijinkan kita untuk mengatur aliran eksekusi program.
Pada Java terdapat 3 (tiga) bentuk pernyataan percabangan, diantaranya : break, countinue dan return.
7.3.1 Pernyataan Break Pernyataan break memiliki 2 (dua) bentuk tidak berlabel (unlabeled) dan berlabel
(labeled).
ikatlah ilmu dengan menuliskannya
Bab 2 – Dasar Pemrograman Java 21
7.3.1.1 Pernyataan break tidak berlabel (unlabeled)
Pernyataan break tidak berlabel digunakan untuk menghentikan jalannya perulangan SWITCH-CASE, FOR, WHILE dan DO-WHILE.
7.3.1.2 Pernyataan break berlabel (labeled)
Pernyataan break berlabel akan menghentikan perulangan dibagian paling luar dari
perulangan, dimana sebelumnya harus diberikan label. Berbeda dengan break tidak berlabel yang hanya digunakan untuk keluar dari sebuah perualangan, break berlabel digunakan untuk keluar dari banyak perulangan (Nested Loop).
ikatlah ilmu dengan menuliskannya
Bab 2 – Dasar Pemrograman Java 22
7.3.2 Pernyataan Continue
Pernyataan continue memiliki 2 (dua) bentuk tidak berlabel (unlabeled) dan berlabel (labeled). Pernyataan countinue digunakan untuk melanjutkan perulangan yang
sedang dijalankan oleh pernyataan FOR, WHILE, DO-WHILE.
7.3.2.1 Pernyataan Continue Tidak Berlabel
Pernyataan countinue tidak berlabel (unlabeled) akan melewati bagian pernyataan setelah pernyatan ini dituliskan (next statement).
7.3.2.2 Pernyataan Continue Berlabel
Bentuk pernyataan continue berlabel (labeled) akan keluar dari perulangan yang
sedang terjadi dan dilanjutkan ke pernyataan berikutnya yang sudah diberi label.
7.3.3 Pernyataan Return
Pernyataan return digunakan untuk keluar dari sebuah method. Terdapat 2 (dua) bentuk, diantaranya : return dengan mengembalikan sebuah nilai, dan tidak mengembalikan sebuah nilai. Dalam mengembalikan sebuah nilai, tipe data nilai
tersebut harus sama dengan tipe data pada method yang dibuat. Pembahasan mengenai return akan dilanjutkan pada pembahasan method.
ikatlah ilmu dengan menuliskannya
Bab 2 – Dasar Pemrograman Java 23
7.4 Method
Method digunakan untuk membagi program kompleks menjadi bagian yang lebih kecil sehingga dapat digunakan berulang-ulang. Method pada Java mirip dengan
fungsi / prosedur dalam bahasa pemrograman lainnya. Method dapat dibedakan menjadi 2 (dua), diantaranya : method yang mengembalikan nilai dan method yang
tidak mengembalikan nilai.
7.4.1 Method Void
Method void adalah method yang tidak mengembalikan nilai, method ini hanya menjalankan intruksi yang ada di dalamnya tanpa mengembalikan hasil dari intruksi yang telah dijalankan.
7.4.2 Method Non Void
Method Non Void adalah method yang tidak void (mengembalikan nilai), method ini akan menjalankan intruksi yang ada di dalamnya dan mengembalikan hasil dari
intruksi tersebut kepada pemanggilnya.
7.5 Method Constructor
Method konstruktor adalah method yang pertama kali dijalankan ketika suatu objek dari sebuah kelas diciptakan. Pada saat proses instance dari sebuah kelas, intruksi di
dalam konstruktor akan dijalankan untuk melakukan inisialisasi dari sebuah kelas. Terdapat beberapa hal penting mengenai konstruktor, diantaranya :
1. Nama konstruktor sama dengan nama kelas. 2. Kelas dapat mempunyai lebih dari 1 (satu) konstruktor.
ikatlah ilmu dengan menuliskannya
Bab 2 – Dasar Pemrograman Java 24
3. Konstruktor dapat mempunyai 0 (nol), 1 (satu) atau lebih parameter.
7.6 Parameter
Parameter pada dasarnya adalah nilai yang dikirimkan sebagai pendukung intruksi yang dilakukan pada method.
Terdapat 2 (dua) teknik pelewatan parameter (parameter passing), diantaranya : pelewatan dengan nilai (pass by value), dan pelewatan dengan acuan (pass by
reference).
ikatlah ilmu dengan menuliskannya
Bab 2 – Dasar Pemrograman Java 25
7.6.1 Pelewatan dengan Nilai (Pass By Value)
Pada teknik pass by value nilai yang dikirimkan akan disalin kepada parameter pemanggil sehingga tidak akan mempengaruhi nilai awal.
7.6.2 Pelewatan dengan Acuan (Pass By Reference)
Pada teknik pass by reference yang dikirmkan bukanlah nilai, malainkan alamat lokasi nilai tersebut. Perubahan yang terjadi pada nilai tersebut akan mempengaruhi nilai awalnya.
ikatlah ilmu dengan menuliskannya
Bab 2 – Dasar Pemrograman Java 26
7.7 Pendekatan Berorientasi Objek
Pendekatan berorientasi objek adalah sebuah konsep untuk membagi bagian program sebagai objek-objek yang saling berinteraksi satu sama lainnya,
sebagaimana objek yang memiliki sifat dan perilaku. Untuk dapat berorientasi objek terdapat 3 konsep penting yang harus digunakan, diantaranya : Inhearitance, Encapsulation, Polymorphism.
7.7.1 Pewarisan (Inhearitance) Pewarisan adalah proses penciptaan kelas baru dengan menurunkan sifat umum
kelas yang telah ada (superclass), sehingga kelas turunannya (subclass) hanya perlu menambahkan sifat khusus yang dimilikinya. Pewarisan dapat dilakukan dengan keyword extends.
ikatlah ilmu dengan menuliskannya
Bab 2 – Dasar Pemrograman Java 27
7.7.2 Pengapsulan (Encapsulation) Pengapsulan adalah proses membungkus program sehingga dapat menjaga bagian
internal program dari pengaksesan eksternal yang tidak diinginkan. Penyembunyian informasi dilakukan dengan menerapkan kendali private atau protected pada elemen data.
7.7.3 Polymorphism
Polymorphism berarti banyak bentuk. Dua objek atau lebih dikatakan sebagai polymorphic bila objek-objek tersebut memiliki antarmuka identik namun memiliki
perilaku yang berbeda.
ikatlah ilmu dengan menuliskannya
Bab 2 – Dasar Pemrograman Java 28
7.8 Java Modifier
Modifier adalah sifat yang dimiliki oleh setiap attribute, method maupun kelas dalam
bahasa pemrograman Java.
7.8.1 Access Modifier
Akses modifier digunakan untuk menentukan spesifikasi tingkat akses, akses
modifier berlaku untuk kelas, interface, metode, dan variable.
No. Modifier Kelas dan Interface Metode dan Variable
1. default Tampak di paketnya Diwarisi oleh subkelasnya di paket
yang sama dengan kelasnya. Dapat di akses oleh metode-metode di kelas-kelas yang
sepaket.
2. public Tampak di manapun Diwarisi oleh semua subkelasnya. Dapat diakses di manapun.
3. protected Tidak dapat diterapkan Diwarisi oleh semua subkelasnya. Dapat diakses oleh metode-metode di kelas-kelas yang
sepaket.
4. private Tidak dapat diterapkan Tidak diwarisi oleh subkelasnya. Tidak dapat diakses oleh kelas lain.
ikatlah ilmu dengan menuliskannya
Bab 2 – Dasar Pemrograman Java 29
7.9 Bitwise Operation
Bitwise operation adalah operasi matematika yang digunakan untuk proses pada
level bit dari sebuah bilangan bulat (integer). Berikut adalah tabel mengenai bitwise
operation pada Java :
Bitwise Operator
Deskripsi Penjelasan Contoh
& AND Jika kedua nilai bernilai 1, maka
hasilnya 1, selebihnya 0.
9 & 5
1001 & 0101 =
0001
| OR Jika salah satu dari nilai atau kedua
nilai bernilai 1, maka hasilnya 1,
selebihnya 0.
9 & 5
1001 & 0101 =
1101
^ XOR Jika salah satu dari nilai bernilai 1,
maka hasilnya 1, selebihnya 0.
9 ^ 5
1001 & 0101 =
1100
~ Complement Komplemen adalah nilai kebalikan, komplemen 0 adalah 1, komplemen
1 adalah 0. ~00110010 = 11001101
<< Left Shift
X << Y
Pergeseran X ke kiri oleh Y bit, urutan bit besar (kiri) hilang,
sementara 0 mengisi bit yang kecil (kanan).
11101101 << 2 = 10110100
>> Right Shift Signed
X >> Y
Pergeseran X ke kiri oleh Y bit, urutan bit kecil hilang (kanan), sementara 0 mengisi bit yang
besar(kiri).
11101101 >> 2 = 00111011
>>> Right Shift Unsigned
X >>> Y
Pergeseran X ke kanan Y, urutan bit kecil hilang (kanan), sementara 0
mengisi bit besar (kiri). Operator ini hanya bekerja pada nilai 32 dan 64
bit.
11111111 11111111 11111111 11111111 >>> 2 = 00111111 11111111
11111111 11111111
ikatlah ilmu dengan menuliskannya
Bab 2 – Dasar Pemrograman Java 30
7.9.1 Contoh Penggunaan Bitwise Operation
Pada pemrograman Java, sudah terdapat pustaka kelas untuk konversi ke dalam
bilangan basis(2), basis(4), basis(16) melalui bilangan basis(10) sehingga kita dapat
menggunakan fungsi-fungsi tersebut seperti contoh di atas.
ikatlah ilmu dengan menuliskannya
Bab 2 – Dasar Pemrograman Java 31
Digital Image Processing pada Java
8.1 Penjelasan Digital Image Processing
Digital Image Processing (DIP) berkaitan dengan memanipulasi gambar digital menggunakan komputer digital. Pada Java sudah disediakan pustaka kelas java.awt.Image, kelas Image merupakan superclass yang mewakili pemrosesan
gambar grafis. BufferedImage merupakan kelas turunan dari kelas Image, digunakan untuk menangani dan memanipulasi data gambar. ImageIO digunakan untuk membaca dan menulis data pada citra.
ikatlah ilmu dengan menuliskannya
Bab 2 – Dasar Pemrograman Java 32
Contoh program untuk membuat file gambar menjadi grayscale.
ikatlah ilmu dengan menuliskannya
Bab 3 – Proses Embed 33
Membuat Aplikasi Steganografi
9.1 Implementasi dan Alur Proses Aplikasi ini akan mempunyai 2 (dua) fungsi utama yaitu, fungsi untuk melakukan penyisipan (embed) dang fungsi untuk melakukan ekstraksi (extract). Berikut gambar yang menunjukan proses aplikasi steganografi.
Pada fungsi penyisipan pesan memiliki 3 (tiga) masukan yaitu gambar, pesan dan password. Berikut penjelasan mengenai alur proses embed :
1. Membaca file gambar dan mengubah file menjadi data byte. 2. Membaca pesan dan mengubah menjadi data byte. 3. Membaca password dan melakukan pembangkitan bilangan acak (pseudo-
random generation) sehingga menghasilkan sebuah keystream. 4. Data byte pesan akan di enkripsi dengan men-XOR tiap byte pesan dengan
byte-byte pada keystream. 5. Byte pesan yang telah terenkripsi di sisipkan kedalam byte-byte pada gambar. 6. Susunan byte-byte gambar disusun kembali menjadi gambar stego.
ikatlah ilmu dengan menuliskannya
Bab 3 – Proses Embed 34
Pada fungsi ekstraksi pesan memiliki 2 (dua) masukan, diantaranya gambar stego
dan password. Berikut penjelasan mengenai alur proses ekstraksi : 1. Membaca file gambar stego dan mengubah file menjadi data byte 2. Memisahkan antara byte pesan dan byte gambar
3. Membaca password dan melakukan pembangkitan bilangan acak (pseudo-random generation) sehingga menghasilkan sebuah keystream.
4. Data byte pesan akan di dekripsi dengan men-XOR tiap byte pesan dengan byte-byte pada keystream.
5. Byte pesan hasil dekripsi akan diubah menjadi bentuk file.
ikatlah ilmu dengan menuliskannya
Bab 3 – Proses Embed 35
Proses Penyisipan Pesan (Embed)
10.1 Rancangan Layar Aplikasi Steganografi (Embed) Sebelum membuat desain Aplikasi Steganografi, buatlah project baru pada Netbeans pilih New -> JFrame Form untuk membuat Form Menu_Utama. Setelah itu tambahkan objek pada Frame seperti pada gambar berikut.
Sesuaikan objek dan nama variable yang digunakan seperti pada gambar berikut:
ikatlah ilmu dengan menuliskannya
Bab 3 – Proses Embed 36
10.2 Menampilkan Gambar Pada saat button btnCoverImage di klik, maka akan menampilkan popup form untuk memilih gambar yang akan di jadikan Cover Image, gambar tersebut akan
ditampilkan pada lblCoverImage. Tambahkan fungsi pada btnCoverImage untuk menampilkan gambar tersebut.
10.3 Memilih dan Mendapatkan byte File Pesan Pada saat button btnAddFile di klik, maka akan menampilkan popup form untuk memilih file yang akan disisipkan pada Cover Image. Deklarasikan variable pesan dengan tipe data array byte untuk menampung data file.
Setelah itu tambahkan fungsi pada btnAddFile untuk memilih file yang akan di
sisipkan dan mendapatkan data byte file tersebut.
ikatlah ilmu dengan menuliskannya
Bab 3 – Proses Embed 37
ikatlah ilmu dengan menuliskannya
Bab 3 – Proses Embed 38
10.4 Mengisi Password
Pada saat btnPassword di klik, maka akan menampilkan form untuk dapat mengisi
password yang akan digunakan. Buatlah form baru dengan pilih New -> JDialog Form untuk membuat form PasswordDialog. Setelah itu tambahkan objek pada Frame seperti pada gambar berikut.
Sesuaikan objek dan nama variable yang digunakan seperti pada gambar berikut:
Deklarasikan variable e_pass dengan tipe data array char untuk menampung data
password.
Akan terjadi komunikasi antara form Menu_Utama dan form PasswordDialog dimana inputan yang diisi pada form PasswordDialog akan di terima oleh form Menu_Utama. Tambahkan fungsi pada Form PasswordDialog sebagai berikut.
ikatlah ilmu dengan menuliskannya
Bab 3 – Proses Embed 39
Tambahkan fungsi-fungsi berikut pada konstruktor Menu_Utama.
Deklarasi dan inisialisasi objek PasswordDialog pada Menu_Utama.
Tambahkan fungsi pada btnPassword untuk menampilkan form PasswordDialog.
Sampai tahap ini peserta sudah dapat menampilkan gambar yang akan dijadikan Cover Image, memilih file yang akan disisipkan pada Cover Image dan menginput
password menggunakan komunikasi antar form.
ikatlah ilmu dengan menuliskannya
Bab 3 – Proses Embed 40
10.5 Enkripsi Pesan Sebelum file pesan disisipkan kedalam gambar, byte file pesan akan dienkripsi
terlebih dahulu dengan men-XOR kan dengan password yang telah ditentukan. Tambahkan fungsi pada saat btnEmbed.
Deklarasikan variabel yang digunakan pada class Controller.
Tambahkan fungsi enkripsi pada class Controller.
ikatlah ilmu dengan menuliskannya
Bab 3 – Proses Embed 41
Fungsi keygen dan keystream menghasilkan bilangan random.
Fungsi getBytesFromFile digunakan untuk mengambil data byte dari suatu file.
ikatlah ilmu dengan menuliskannya
Bab 3 – Proses Embed 42
10.6 Menyisipkan Pesan Setelah pesan berhasil di enkripsi tambahkan fungsi untuk menyisipkan pesan
kedalam gambar.
Tambahkan fungsi pada class Controller.
Fungsi user_spac digunakan untuk membuat salinan gambar cover.
ikatlah ilmu dengan menuliskannya
Bab 3 – Proses Embed 43
Fungsi embedding digunakan untuk menyisipkan pesan kedalam gambar.
ikatlah ilmu dengan menuliskannya
Bab 3 – Proses Embed 44
ikatlah ilmu dengan menuliskannya
Bab 4 – Proses Ekstrak 45
Ekstraksi Pesan
11.1 Implementasi dan Alur Proses Pada fungsi ekstraksi pesan memiliki 2 (dua) masukan, diantaranya gambar stego dan password. Berikut penjelasan mengenai alur proses ekstraksi :
6. Membaca file gambar stego dan mengubah file menjadi data byte
7. Memisahkan antara byte pesan dan byte gambar 8. Membaca password dan melakukan pembangkitan bilangan acak (pseudo-
random generation) sehingga menghasilkan sebuah keystream.
9. Data byte pesan akan di dekripsi dengan men-XOR tiap byte pesan dengan byte-byte pada keystream.
10. Byte pesan hasil dekripsi akan diubah menjadi bentuk file.
ikatlah ilmu dengan menuliskannya
Bab 4 – Proses Ekstrak 46
Proses Ekstraksi Pesan
12.1 Rancangan Layar Aplikasi Steganografi (Ekstrak) Lanjutkan desain Form Menu_Utama pada Tab Extract seperti pada gambar berikut.
Sesuaikan objek dan nama variable yang digunakan seperti pada gambar berikut:
ikatlah ilmu dengan menuliskannya
Bab 4 – Proses Ekstrak 47
12.2 Memilih Gambar Stego Pada saat button btnAddStego di klik, maka akan menampilkan popup form untuk memilih gambar Stego yang sudah berisi pesan rahasia, gambar tersebut akan
ditampilkan pada lblStegoImage2. Tambahkan fungsi pada btnAddStego untuk menampilkan gambar tersebut.
12.3 Mendapatkan Byte Pesan Rahasia Saat btnExtrak di klik, yang pertama akan dilakukan adalah mendapatkan byte pesan yang telah disisipkan pada Gambar Stego. Tambahkan fungsi extract pada Controller.
ikatlah ilmu dengan menuliskannya
Bab 4 – Proses Ekstrak 48
Setelah itu tambahkan fungsi pada saat btnExtrak di klik, seperti berikut:
ikatlah ilmu dengan menuliskannya
Bab 4 – Proses Ekstrak 49
12.4 Dekripsi Byte Pesan Setelah mendapatkan byte pesan, byte pesan tersebut akan di dekripsi dengan membangkitkan bilangan acak berdasarkan password dan men-XORkannya dengan
data byte pesan. Tambahkan fungsi decryp pada Controller.
Tambahkan variabel berikut pada Menu_Utama.
Setelah itu tambahkan fungsi pada saat btnExtrak di klik, seperti berikut:
ikatlah ilmu dengan menuliskannya
Bab 4 – Proses Ekstrak 50
12.5 Membentuk File Pesan Setelah berhasil di dekripsi byte pesan akan dibentuk kembali menjadi file utuh, tambahkan fungsi pada btnExtrak.
ikatlah ilmu dengan menuliskannya
51
Daftar Pustaka
Imam, Khairul 2013, Penyembunyian Pesan Rahasia Pada Citra Digital Dengan Teknik
Steganografi Menggunakan Metode Least Significant Bit (LSB), Jakarta, Universitas
BUDI LUHUR. Kadir, Abdul, & Susanto, Adhi 2013, Teori Dan Aplikasi Pengolahan Citra, Yogyakarta, Andi
Publisher.
ikatlah ilmu dengan menuliskannya
52
Tentang Penulis
Agung Sulistyanto adalah mahasiswa Fakultas Teknologi Informasi Universitas BUDI LUHUR. Selain kuliah Saya juga aktif pada
Laboratorium ICT Terpadu Universitas BUDI LUHUR. Minat saya pada pemrograman khususnya Java Enterprise. Untuk tulisan yang lain dapat di akses melalui slideshare.net/agungsulistyan.
Saya dapat dihubungi melaui email [email protected] atau Linkedin agung.sulistyanto.
Top Related