SlideShare a Scribd company logo
1 of 53
Download to read offline
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 agung.sulistyan@gmail.com
atau Linkedin agung.sulistyanto.

More Related Content

What's hot

Logika informatika-4
Logika informatika-4Logika informatika-4
Logika informatika-4
rabib
 
5 ta-2021-05-business-understanding-modul-ariw-2021-07-17
5 ta-2021-05-business-understanding-modul-ariw-2021-07-175 ta-2021-05-business-understanding-modul-ariw-2021-07-17
5 ta-2021-05-business-understanding-modul-ariw-2021-07-17
ArdianDwiPraba
 
Heuristic search-best-first-search
Heuristic search-best-first-searchHeuristic search-best-first-search
Heuristic search-best-first-search
AMIK AL MA'SOEM
 
Algoritma - prosedur dan fungsi
Algoritma - prosedur dan fungsiAlgoritma - prosedur dan fungsi
Algoritma - prosedur dan fungsi
Zombie Black
 
Contoh peyelesaian logika fuzzy
Contoh peyelesaian logika fuzzyContoh peyelesaian logika fuzzy
Contoh peyelesaian logika fuzzy
Zaenal Khayat
 
Makalah logika matematika
Makalah logika matematikaMakalah logika matematika
Makalah logika matematika
Nasifah LasMana
 

What's hot (20)

Etika Komputer
Etika Komputer Etika Komputer
Etika Komputer
 
Logika pemrograman
Logika pemrogramanLogika pemrograman
Logika pemrograman
 
Etika profesi tugas 1
Etika profesi tugas 1Etika profesi tugas 1
Etika profesi tugas 1
 
2. galat
2. galat2. galat
2. galat
 
Matematika Diskrit - 11 kompleksitas algoritma - 02
Matematika Diskrit - 11 kompleksitas algoritma - 02Matematika Diskrit - 11 kompleksitas algoritma - 02
Matematika Diskrit - 11 kompleksitas algoritma - 02
 
Logika informatika-4
Logika informatika-4Logika informatika-4
Logika informatika-4
 
Kriptografi - Stream Cipher
Kriptografi - Stream CipherKriptografi - Stream Cipher
Kriptografi - Stream Cipher
 
5 ta-2021-05-business-understanding-modul-ariw-2021-07-17
5 ta-2021-05-business-understanding-modul-ariw-2021-07-175 ta-2021-05-business-understanding-modul-ariw-2021-07-17
5 ta-2021-05-business-understanding-modul-ariw-2021-07-17
 
Array dan Pointer
Array dan PointerArray dan Pointer
Array dan Pointer
 
Heuristic search-best-first-search
Heuristic search-best-first-searchHeuristic search-best-first-search
Heuristic search-best-first-search
 
Histogram - Citra Digital
Histogram - Citra DigitalHistogram - Citra Digital
Histogram - Citra Digital
 
Algoritma - prosedur dan fungsi
Algoritma - prosedur dan fungsiAlgoritma - prosedur dan fungsi
Algoritma - prosedur dan fungsi
 
Contoh peyelesaian logika fuzzy
Contoh peyelesaian logika fuzzyContoh peyelesaian logika fuzzy
Contoh peyelesaian logika fuzzy
 
Deteksi dan koreksi kesalahan lengkap
Deteksi dan koreksi kesalahan lengkapDeteksi dan koreksi kesalahan lengkap
Deteksi dan koreksi kesalahan lengkap
 
Graf ( Matematika Diskrit)
Graf ( Matematika Diskrit)Graf ( Matematika Diskrit)
Graf ( Matematika Diskrit)
 
Pengolahan Citra Digital Dengan Menggunakan MATLAB
Pengolahan Citra Digital Dengan Menggunakan MATLABPengolahan Citra Digital Dengan Menggunakan MATLAB
Pengolahan Citra Digital Dengan Menggunakan MATLAB
 
Kriptografi dalam kehidupan sehari hari
Kriptografi dalam kehidupan sehari hariKriptografi dalam kehidupan sehari hari
Kriptografi dalam kehidupan sehari hari
 
Kriptografi, Enkripsi dan Dekripsi
Kriptografi, Enkripsi dan DekripsiKriptografi, Enkripsi dan Dekripsi
Kriptografi, Enkripsi dan Dekripsi
 
Makalah logika matematika
Makalah logika matematikaMakalah logika matematika
Makalah logika matematika
 
Data Mining - Naive Bayes
Data Mining - Naive BayesData Mining - Naive Bayes
Data Mining - Naive Bayes
 

Similar to Materi Pelatihan_Steganografi Metode LSB

jurnal pengolahan citra
jurnal pengolahan citrajurnal pengolahan citra
jurnal pengolahan citra
Ovie Poenya
 
Sniper 2009-penyembunyian-dan-pengacakan-data
Sniper 2009-penyembunyian-dan-pengacakan-dataSniper 2009-penyembunyian-dan-pengacakan-data
Sniper 2009-penyembunyian-dan-pengacakan-data
Stmik Adhi Guna
 
pembentukan citra (pengolahan citra digital)
pembentukan citra (pengolahan citra digital)pembentukan citra (pengolahan citra digital)
pembentukan citra (pengolahan citra digital)
khaerul azmi
 
pembentukan citra (pengolahan citra digital)
pembentukan citra (pengolahan citra digital)pembentukan citra (pengolahan citra digital)
pembentukan citra (pengolahan citra digital)
khaerul azmi
 

Similar to Materi Pelatihan_Steganografi Metode LSB (20)

Citra digital
Citra digitalCitra digital
Citra digital
 
jurnal pengolahan citra
jurnal pengolahan citrajurnal pengolahan citra
jurnal pengolahan citra
 
Proposol conto
Proposol contoProposol conto
Proposol conto
 
Proposol conto
Proposol contoProposol conto
Proposol conto
 
Materi 2 mengenal jenis citra
Materi 2 mengenal jenis citraMateri 2 mengenal jenis citra
Materi 2 mengenal jenis citra
 
Slide minggu 6 (citra digital)
Slide minggu 6 (citra digital)Slide minggu 6 (citra digital)
Slide minggu 6 (citra digital)
 
Jenis-Jenis Format Citra
Jenis-Jenis Format CitraJenis-Jenis Format Citra
Jenis-Jenis Format Citra
 
Sniper 2009-penyembunyian-dan-pengacakan-data
Sniper 2009-penyembunyian-dan-pengacakan-dataSniper 2009-penyembunyian-dan-pengacakan-data
Sniper 2009-penyembunyian-dan-pengacakan-data
 
Pengolahan citra digital adalah teknologi visual yang digunakan untuk mengama...
Pengolahan citra digital adalah teknologi visual yang digunakan untuk mengama...Pengolahan citra digital adalah teknologi visual yang digunakan untuk mengama...
Pengolahan citra digital adalah teknologi visual yang digunakan untuk mengama...
 
Laporan pcd 01
Laporan pcd 01Laporan pcd 01
Laporan pcd 01
 
Jurnal Article &lt;search>
Jurnal Article &lt;search>Jurnal Article &lt;search>
Jurnal Article &lt;search>
 
2. jurnal dessy purwandani implementasi metode gaussian smoothing untuk peng...
2. jurnal dessy purwandani  implementasi metode gaussian smoothing untuk peng...2. jurnal dessy purwandani  implementasi metode gaussian smoothing untuk peng...
2. jurnal dessy purwandani implementasi metode gaussian smoothing untuk peng...
 
steganografi gambar dan teks
steganografi gambar dan tekssteganografi gambar dan teks
steganografi gambar dan teks
 
PERT 1 - Citra.ppt
PERT 1 - Citra.pptPERT 1 - Citra.ppt
PERT 1 - Citra.ppt
 
Mendiskusikan_Format_Gambar.pdf
Mendiskusikan_Format_Gambar.pdfMendiskusikan_Format_Gambar.pdf
Mendiskusikan_Format_Gambar.pdf
 
KD Mendiskusikan format gambar
KD Mendiskusikan format gambarKD Mendiskusikan format gambar
KD Mendiskusikan format gambar
 
Chap 3 - Dasar Pengolahan Citra
Chap 3 - Dasar Pengolahan CitraChap 3 - Dasar Pengolahan Citra
Chap 3 - Dasar Pengolahan Citra
 
pembentukan citra (pengolahan citra digital)
pembentukan citra (pengolahan citra digital)pembentukan citra (pengolahan citra digital)
pembentukan citra (pengolahan citra digital)
 
pembentukan citra (pengolahan citra digital)
pembentukan citra (pengolahan citra digital)pembentukan citra (pengolahan citra digital)
pembentukan citra (pengolahan citra digital)
 
Pengolahan Citra digital
Pengolahan Citra digitalPengolahan Citra digital
Pengolahan Citra digital
 

More from Agung Sulistyanto

Desain laporan pada java dengan ireport & jcreator
Desain laporan pada java dengan ireport & jcreatorDesain laporan pada java dengan ireport & jcreator
Desain laporan pada java dengan ireport & jcreator
Agung Sulistyanto
 

More from Agung Sulistyanto (15)

Metodologi dan pengujian pada image steganografi
Metodologi dan pengujian pada image steganografiMetodologi dan pengujian pada image steganografi
Metodologi dan pengujian pada image steganografi
 
Perkembangan Metodologi Steganografi
Perkembangan Metodologi SteganografiPerkembangan Metodologi Steganografi
Perkembangan Metodologi Steganografi
 
Peningkatan Kompresi Teks Shannon-Fano
Peningkatan Kompresi Teks Shannon-FanoPeningkatan Kompresi Teks Shannon-Fano
Peningkatan Kompresi Teks Shannon-Fano
 
Paper Review - Metodologi Testing
Paper Review - Metodologi TestingPaper Review - Metodologi Testing
Paper Review - Metodologi Testing
 
Paper Review - Sistem Penunjang Keputusan
Paper Review - Sistem Penunjang KeputusanPaper Review - Sistem Penunjang Keputusan
Paper Review - Sistem Penunjang Keputusan
 
Jurnal
JurnalJurnal
Jurnal
 
KKP_SISTEM PENUNJANG KEPUTUSAN UNTUK MENENTUKAN ASISTEN TERBAIK DENGAN METODE...
KKP_SISTEM PENUNJANG KEPUTUSAN UNTUK MENENTUKAN ASISTEN TERBAIK DENGAN METODE...KKP_SISTEM PENUNJANG KEPUTUSAN UNTUK MENENTUKAN ASISTEN TERBAIK DENGAN METODE...
KKP_SISTEM PENUNJANG KEPUTUSAN UNTUK MENENTUKAN ASISTEN TERBAIK DENGAN METODE...
 
TA_Digital Watermarking Metode Modified Least Significant Bit
TA_Digital Watermarking Metode Modified Least Significant BitTA_Digital Watermarking Metode Modified Least Significant Bit
TA_Digital Watermarking Metode Modified Least Significant Bit
 
Panduan moodle
Panduan moodlePanduan moodle
Panduan moodle
 
Membuat grafik sederhana pada java dengan JFreeChart
Membuat grafik sederhana pada java dengan JFreeChartMembuat grafik sederhana pada java dengan JFreeChart
Membuat grafik sederhana pada java dengan JFreeChart
 
Mempercantik tampilan frame dengan JTattoo
Mempercantik tampilan frame dengan JTattooMempercantik tampilan frame dengan JTattoo
Mempercantik tampilan frame dengan JTattoo
 
Menjaga Validasi tanggal dengan Jcalendar pada java
Menjaga Validasi tanggal dengan Jcalendar pada javaMenjaga Validasi tanggal dengan Jcalendar pada java
Menjaga Validasi tanggal dengan Jcalendar pada java
 
Aplikasi bengkel sederhana berbasis desktop dengan java
Aplikasi bengkel sederhana berbasis desktop dengan javaAplikasi bengkel sederhana berbasis desktop dengan java
Aplikasi bengkel sederhana berbasis desktop dengan java
 
Aplikasi sms sederhana dengan gammu dan java
Aplikasi sms sederhana dengan gammu dan javaAplikasi sms sederhana dengan gammu dan java
Aplikasi sms sederhana dengan gammu dan java
 
Desain laporan pada java dengan ireport & jcreator
Desain laporan pada java dengan ireport & jcreatorDesain laporan pada java dengan ireport & jcreator
Desain laporan pada java dengan ireport & jcreator
 

Materi Pelatihan_Steganografi Metode LSB

  • 1. 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.
  • 2. 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.
  • 3. 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.
  • 4. 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
  • 5. 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
  • 6. 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.
  • 7. 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
  • 8. 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 :
  • 9. 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
  • 10. 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.
  • 11. 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.
  • 12. 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
  • 13. 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.
  • 14. 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 :
  • 15. 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 :
  • 16. 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 :
  • 17. 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.
  • 18. 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.
  • 19. 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).
  • 20. 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.
  • 21. 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).
  • 22. 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).
  • 23. 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.
  • 24. 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.
  • 25. 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).
  • 26. 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.
  • 27. 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.
  • 28. 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.
  • 29. 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.
  • 30. 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
  • 31. 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.
  • 32. 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.
  • 33. ikatlah ilmu dengan menuliskannya Bab 2 – Dasar Pemrograman Java 32 Contoh program untuk membuat file gambar menjadi grayscale.
  • 34. 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.
  • 35. 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.
  • 36. 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:
  • 37. 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.
  • 38. ikatlah ilmu dengan menuliskannya Bab 3 – Proses Embed 37
  • 39. 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.
  • 40. 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.
  • 41. 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.
  • 42. 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.
  • 43. 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.
  • 44. ikatlah ilmu dengan menuliskannya Bab 3 – Proses Embed 43 Fungsi embedding digunakan untuk menyisipkan pesan kedalam gambar.
  • 45. ikatlah ilmu dengan menuliskannya Bab 3 – Proses Embed 44
  • 46. 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.
  • 47. 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:
  • 48. 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.
  • 49. ikatlah ilmu dengan menuliskannya Bab 4 – Proses Ekstrak 48 Setelah itu tambahkan fungsi pada saat btnExtrak di klik, seperti berikut:
  • 50. 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:
  • 51. 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.
  • 52. 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.
  • 53. 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 agung.sulistyan@gmail.com atau Linkedin agung.sulistyanto.