BAB 2 LANDASAN TEORI

dokumen-dokumen yang mirip
BAB III PENGERTIAN DAN SEJARAH SINGKAT KRIPTOGRAFI

ENKRIPSI AFFINE CIPHER UNTUK STEGANOGRAFI PADA ANIMASI CITRA GIF

BAB 2 LANDASAN TEORI

BAB I PENDAHULUAN 1.1 Latar Belakang

1.1 LATAR BELAKANG I-1

BAB I PENDAHULUAN. 1.1 Latar Belakang

BAB I PENDAHULUAN. Dalam Perkembangan teknologi informasi, keamanan data adalah hal

Teknik Konversi Berbagai Jenis Arsip ke Dalam bentuk Teks Terenkripsi

KEAMANAN DATA DENGAN MENGGUNAKAN ALGORITMA RIVEST CODE 4 (RC4) DAN STEGANOGRAFI PADA CITRA DIGITAL

Steganografi Pada Citra dengan Format GIF Menggunakan Algoritma GifShuffle

BAB 2 LANDASAN TEORI. 2.1 Kriptografi

Aplikasi Perkalian dan Invers Matriks dalam Kriptografi Hill Cipher

BAB I PENDAHULUAN. Informasi merupakan suatu hal yang sangat penting dalam. kehidupan kita. Seperti dengan adanya teknologi internet semua

BAB 2 LANDASAN TEORI

BAB II LANDASAN TEORI

PERANCANGAN APLIKASI KOMPRESI CITRA DENGAN METODE RUN LENGTH ENCODING UNTUK KEAMANAN FILE CITRA MENGGUNAKAN CAESAR CHIPER

BAB 1 PENDAHULUAN. 1.1 Latar Belakang. Perkembangan dunia digital saat ini membuat lalu lintas pengiriman data elektronik

BAB I PENDAHULUAN 1.1. LATAR BELAKANG

Pengenalan Kriptografi

ANALISIS METODE MASKING-FILTERING DALAM PENYISIPAN DATA TEKS

STRATEGI DIVIDE AND CONQUER

TEKNIK STEGANOGRAFI UNTUK PENYEMBUNYIAN PESAN TEKS MENGGUNAKAN ALGORITMA GIFSHUFFLE

BAB 2 LANDASAN TEORI

BAB II TINJAUAN PUSTAKA. pesan di dalam media tersebut. Kata steganografi (steganography) berasal

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

BAB I PENDAHULUAN 1.1 Latar Belakang

BAB I PENDAHULUAN. disadap atau dibajak orang lain. Tuntutan keamanan menjadi semakin kompleks, maka harus dijaga agar tidak dibajak orang lain.

PENGGUNAAN KRIPTOGRAFI DAN STEGANOGRAFI BERDASARKAN KEBUTUHAN DAN KARAKTERISTIK KEDUANYA

Studi, Perbandingan Metode Steganografi, dan Metode Steganalisis pada Berkas HTML

BAB II LANDASAN TEORI. bilangan bulat dan mengandung berbagai masalah terbuka yang dapat dimengerti

Modifikasi Affine Cipher Dan Vigènere Cipher Dengan Menggunakan N Bit

Pengantar Kriptografi

Perancangan dan Implementasi Aplikasi Steganografi Menggunakan Algoritma Gifshuffle pada Citra GIF Animated Artikel Ilmiah

MAKALAH KRIPTOGRAFI KLASIK

TEKNIK PENYEMBUNYIAN PESAN TEKS PADA MEDIA CITRA GIF DENGAN METODE LEAST SIGNIFICANT BIT (LSB)

Optimasi Konversi String Biner Hasil Least Significant Bit Steganography

BAB 2 LANDASAN TEORI

PENGGUNAAN KRIPTOGRAFI DAN STEGANOGRAFI BERDASARKAN KEBUTUHAN DAN KARAKTERISTIK KEDUANYA

MODIFIKASI VIGENERE CIPHER DENGAN MENGGUNAKAN TEKNIK SUBSTITUSI BERULANG PADA KUNCINYA

Beberapa Algoritma Kriptografi Klasik. Haida Dafitri, ST, M.Kom

Pemanfaatan Steganografi dalam Kriptografi Visual

Penerapan Metode End Of File Pada Steganografi Citra Gambar dengan Memanfaatkan Algoritma Affine Cipher sebagai Keamanan Pesan

BAB II DASAR TEORI. 1. Citra diam yaitu citra tunggal yang tidak bergerak. Contoh dari citra diam adalah foto.

DASAR-DASAR KEAMANAN SISTEM INFORMASI Kriptografi, Steganografi. Gentisya Tri Mardiani, S.Kom

BAB II TINJAUAN PUSTAKA. Kriptografi (cryptography) berasal dari Bahasa Yunani: cryptós artinya

DASAR-DASAR KEAMANAN SISTEM INFORMASI Kriptografi, Steganografi. Gentisya Tri Mardiani, S.Kom.,M.Kom

BAB III ANALISIS DAN DESAIN SISTEM

Pendahuluan 2. Tinjauan Pustaka

(pencurian, penyadapan) data. Pengamanan data dapat dilakukan dengan dua cara, yaitu steganography dan cryptography.

Bab 2 Tinjauan Pustaka 2.1 Penelitian Terdahulu

BAB I PENDAHULUAN. Pada era teknologi informasi yang semakin berkembang, pengiriman data

BAB 2 TINJAUAN TEORETIS

ENKRIPSI CITRA BITMAP MELALUI SUBSTITUSI WARNA MENGGUNAKAN VIGENERE CIPHER

PENERAPAN METODA FILE COMPRESSION PADA KRIPTOGRAFI KUNCI SIMETRI

BAB I PENDAHULUAN. paling populer di dunia. Internet memiliki banyak fasilitas dan kemudahan

IMPLEMENTASI KRIPTOGRAFI DAN STEGANOGRAFI DENGAN MENGGUNAKAN ALGORITMA RSA DAN MEMAKAI METODE LSB

OPTIMASI KONVERSI STRING BINER HASIL LEAST SIGNIFICANT BIT STEGANOGRAPHY (LSB)

Reference. William Stallings Cryptography and Network Security : Principles and Practie 6 th Edition (2014)

STUDI DAN PERBANDINGAN PERFORMANSI ALGORITMA SIMETRI VIGENERE CHIPPER BINNER DAN HILL CHIPPER BINNER Ivan Nugraha NIM :

APLIKASI JAVA KRIPTOGRAFI MENGGUNAKAN ALGORITMA VIGENERE. Abstract

BAB 2 TINJAUAN PUSTAKA

BAB 2 LANDASAN TEORI. 2.1 Kriptografi Definisi Kriptografi

BAB II LANDASAN TEORI

Perbandingan Steganografi pada Citra Gambar Graphics Interchange Format dengan Algoritma Gifshuffle dan Metode Least Significant Bit

Tanda Tangan Digital Untuk Gambar Menggunakan Kriptografi Visual dan Steganografi

BAB II LANDASAN TEORI

Grafik yang menampilkan informasi mengenai penyebaran nilai intensitas pixel-pixel pada sebuah citra digital.

PENYISIPAN PESAN DENGAN ALGORITMA PIXEL VALUE DIFFERENCING DENGAN ALGORITMA CAESAR CIPHER PADA PROSES STEGANOGRAFI

LAMPIRAN A ALGORITMA AES 128

Penerapan Metode Adaptif Dalam Penyembunyian Pesan Pada Citra

BAB 2 TINJAUAN TEORITIS

BAB 2 LANDASAN TEORI

BAB 1 PENDAHULUAN Latar Belakang

BAB 2 TINJAUAN PUSTAKA

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

BAB I PENDAHULUAN. Sejak munculnya World Wide Web (WWW) pada tahun 1990-an yang

KOMBINASI ALGORITMA PIXEL VALUE DIFFERENCING DENGAN ALGORITMA CAESAR CIPHER PADA PROSES STEGANOGRAFI

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

BAB 1 PENDAHULUAN Latar Belakang Masalah

PENERAPAN STEGANOGRAFI PADA SEBUAH CITRA

BAB II TINJAUAN PUSTAKA

BAB II LANDASAN TEORI. yang mendasari pembahasan pada bab-bab berikutnya. Beberapa definisi yang

BAB I. PENDAHULUAN A. Latar Belakang

STMIK GI MDP. Program Studi Teknik Informatika Skripsi Sarjana Komputer Semester Genap Tahun 2009/2010

STEGANOGRAFI DENGAN METODE PENGGANTIAN LEAST SIGNIFICANT BIT (LSB)

IMPLEMENTASI ALGORITMA KEYED-HASH MESSAGE AUTHENTICATION CODE (HMAC) PADA PESAN TEKS BERBASIS CHATTING

Pembangkit Kunci Acak pada One-Time Pad Menggunakan Fungsi Hash Satu-Arah

Transformasi Linier dalam Metode Enkripsi Hill- Cipher

BAB 1 PENDAHULUAN. 1.1 Latar Belakang. Seiring perkembangan teknologi, berbagai macam dokumen kini tidak lagi dalam

KRIPTOGRAFI PADA FILE AUDIO MP3 MENGGUNAKAN METODE PENGEMBANGAN TRANSPOSISI

STEGANOGRAFI DIGITAL CITRA BERGERAK ANIMATED GIF

BAB I PENDAHULUAN. mempunyai makna. Dalam kriptografi dikenal dua penyandian, yakni enkripsi

BAB 2 LANDASAN TEORI

BAB I PENDAHULUAN 1.1 Latar Belakang

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

1.1 Latar Belakang Sejak zaman dahulu, pentingnya kerahasiaan suatu informasi telah menjadi suatu perhatian tersendiri. Manusia berusaha mencari cara

BAB II TINJAUAN PUSTAKA

Pemampatan Data Sebagai Bagian Dari Kriptografi

Analisis Penerapan Algoritma MD5 Untuk Pengamanan Password

Transkripsi:

BAB 2 LANDASAN TEORI 2.1 Kriptografi Kriptografi saat ini telah menjadi salah satu syarat penting dalam keamanan teknologi informasi terutama dalam pengiriman pesan rahasia. Pengiriman pesan rahasia sangat rentan terhadap serangan yang dilakukan oleh pihak ketiga, seperti penyadapan, pemutusan komunikasi, pengubahan pesan yang dikirim, dan lain-lain. Kriptografi dapat meningkatkan keamanan dalam pengiriman pesan atau komunikasi data dengan cara menyandikan pesan tersebut berdasarkan algoritma dan kunci tertentu yang hanya diketahui oleh pihak-pihak yang berhak atas data/informasi tersebut. Hal ini menyebabkan pihak-pihak yang tidak berhak tidak dapat mengerti isi pesan tersebut. 2.1.1 Pengertian Kriptografi Kriptografi (chryptography) berasal dari dua kata dalam Bahasa Yunani, yaitu cryptos yang berarti rahasia, dan graphein yang berarti tulisan. Jadi, kriptografi dapat diartikan sebagai tulisan rahasia. (Munir, 2006) Menurut Kamus Oxford English, kriptografi adalah sebuah cara rahasia dalam menulis hanya dapat dimengerti oleh orang yang memiliki kunci. Secara umum, seni dalam menulis dan menyelesaikan sandi rahasia. (Manfredi, 2008) Secara umum, kriptografi terdiri dua proses utama, yaitu enkripsi dan dekripsi. Proses enkripsi akan mengubah pesan asli (plainteks) menjadi pesan terenkripsi

dengan menggunakan algoritma dan kunci tertentu yang tidak dapat dibaca secara langsung (cipherteks). Proses dekripsi merupakan kebalikan dari proses enkripsi, yaitu proses untuk memperoleh kembali plainteks dari cipherteks menggunakan kunci dan algoritma tertentu. Kedua proses tersebut dapat dilihat dari gambar berikut: enkripsi Plainteks Cipherteks dekripsi Gambar 2.1 Proses-proses kriptografi 2.1.2 Sejarah Kriptografi Sejarah kriptografi sebagian besar merupakan sejarah kriptografi klasik, yaitu metode enkripsi yang menggunakan kertas dan pensil atau mungkin dengan bantuan alat mekanik sederhana. Secara umum algoritma kriptografi klasik dikelompokkan menjadi dua kategori, yaitu algoritma transposisi (transposition cipher) dan algoritma substitusi (substitution cipher). Cipher transposisi mengubah susunan huruf-huruf di dalam pesan, sedangkan cipher substitusi mengganti setiap huruf atau kelompok huruf dengan sebuah huruf atau kelompok huruf lain. Sejarah kriptografi klasik mencatat penggunaan cipher transposisi oleh tentara Sparta di Yunani pada permulaan tahun 400 SM. Mereka menggunakan alat yang bernama Scytale. Scytale terdiri dari sebuah kertas panjang dari daun papyrus yang dililitkan pada sebuah silinder dari diameter tertentu (diameter silinder menyatakan kunci penyandian). Pesan ditulis secara horizontal, baris per baris. Bila pita dilepaskan, maka huruf-huruf di dalamnya telah tersusun secara acak membentuk pesan rahasia. Untuk membaca pesan, penerima pesan harus melilitkan kembali kertas tersebut ke silinder yang diameternya sama dengan diameter silinder pengirim. Sedangkan algoritma subsitusi paling awal dan paling sederhana adalah Caesar cipher, yang digunakan oleh raja Yunani kuno, Julius Caesar. Caranya adalah dengan mengganti

setiap karakter di dalam alfabet dengan karakter yang terletak pada tiga posisi berikutnya di dalam susunan alfabet. Di India, kriptografi digunakan oleh pencinta (lovers) untuk berkomunikasi tanpa diketahui orang. Bukti ini ditemukan di dalam buku Kama Sutra yang merekomendasikan wanita seharusnya mempelajari seni memahani tulisan dengan cipher. Pada abad ke-17, sejarah kriptografi mencatat korban ketika ratu Skotlandia, Queen Mary, dipancung setelah surat rahasianya dari balik penjara (surat terenkripsi yang isinya rencana membunuh Ratu Elizabeth I) berhasil dipecahkan oleh seorang pemecah kode. Kriptografi umum digunakan di kalangan militer. Pada Perang Dunia ke-2, pemerintah Nazi Jerman membuat mesin enkripsi yang dinamakan Enigma. Mesin yang menggunakan beberapa buah rotor (roda berputar) ini melakukan enkripsi dengan cara yang sangat rumit. Namun Enigma cipher berhasil dipecahkan oleh pihak Sekutu dan keberhasilan memcahkan Enigma sering dikatakan sebagai faktor yang memperpendek perang dunia ke-2. Kriptografi modern dipicu oleh perkembangan peralatan komputer digital. Dengan komputer digital, cipher yang lebih kompleks menjadi sangat mungkin untuk dapat dihasilkan. Tidak seperti kriptografi klasik yang mengenkripsi karakter per karakter (dengan menggunakan alfabet tradisional), kriptografi modern beroperasi pada string biner. (Munir, 2006. hal: 10-12) Ada banyak sekali algoritma kriptografi yang telah diciptakan hingga saat ini, baik kriptografi klasik maupun kriptografi modern. Namun algoritma kriptografi yang dibahas dalam tugas akhir ini hanya algoritma Affine Cipher karena algoritma tersebutlah yang digunakan untuk menambah lapisan keamanan pada program steganografi yang dibuat oleh penulis.

2.1.3 Affine Cipher Menurut Munir (2006), Affine cipher adalah perluasan dari Caesar cipher, yang mengalikan plainteks dengan sebuah nilai dan menambahkannya dengan sebuah pergeseran. Secara matematis enkripsi plainteks menghasilkan cipherteks dinyatakan dengan fungsi kongruen: Sementara dekripsi cipherteks menjadi plainteks dinyatakan sebagai berikut: Dimana: n = ukuran alfabet P = plainteks yang dikonversi menjadi bilangan bulat dari 0 sampai n 1 sesuai dengan urutan dalam alfabet C = cipherteks yang dikonversi menjadi bilangan bulat dari 0 sampai n 1 sesuai dengan urutan dalam alfabet m = bilangan bulat yang harus relatif prima dengan n (jika tidak relatif prima, maka dekripsi tidak bisa dilakukan) b = jumlah pergeseran Sebagai contoh, urutan huruf dalam alfabet yang berjumlah 26 berikut diekuivalenkan dengan urutan nomor. (Anonymous, 2006) A B C D E F G H I J K L M 0 1 2 3 4 5 6 7 8 9 10 11 12 N O P Q R S T U V W X Y Z 13 14 15 16 17 18 19 20 21 22 23 24 25 Kemudian carilah ciphertext dari ITS COOL menggunakan Affine Cipher dengan ketentuan m = 5 dan b = 8. Maka, fungsi enkripsinya adalah:

Plaintext I T S C O O L 8 19 18 2 14 14 11 48 103 98 18 78 78 63 22 25 20 18 0 0 11 Ciphertext W Z U S A A L Untuk memperoleh kembali plainteks dari contoh di atas maka kita harus memperoleh fungsi dekripsi terlebih dahulu. Jika Kemudian kedua ruas dikalikan dengan P (mod n) memiliki nilai yang sama dengan P, maka: Sebagai contoh, dekripsilah cipherteks HPCCXAQ yang memiliki fungsi enkripsi. Pertama-tama kita harus mencari fungsi dekripsi terlebih dahulu yang dapat diperoleh dengan menyelesaikan. Solusinya adalah karena Maka fungsi dekripsinya adalah: Ciphertext H P C C X A Q 7 15 2 2 23 0 16-1 7-6 -6 15-8 8-21 147-126 -126 315-168 168 5 17 4 4 3 14 12 plaintext F R E E D O M

2.2 Steganografi Steganografi adalah seni menyembunyikan pesan. Tujuan steganografi adalah menyembunyikan komunikasi untuk mecegah pihak ketiga mengetahui tentang keberadaan pesan. Hal ini berbeda dengan kriptografi, seni merahasiakan pesan, yang ditujukan untuk membuat pesan tidak dapat dibaca oleh pihak ketiga tetapi tidak menyembunyikan keberadaan komunikasi rahasia tersebut. (Kessler, 2004) Pencetus kata steganografi adalah Trithemius, penulis buku kriptografi: Polygraphia and Steganographia. Istilah tersebut diambil dari Bahasa Yunani, steganos yang artinya tersembunyi dan graphia yang artinya tulisan. (Cox et al, 2008) Steganografi membutuhkan dua properti yaitu media penampung dan pesan rahasia. Media penampung yang umum digunakan adalah gambar, suara, video, atau teks. Pesan yang disembunyikan dapat berupa sebuah artikel, gambar, daftar barang, kode program, atau pesan lain. Keuntungan steganografi dibandingkan dengan kriptografi adalah bahwa pesan yang dikirim tidak menarik perhatian sehingga media penampung yang membawa pesan tidak menimbulkan kecurigaan bagi pihak ketiga. Ini berbeda dengan kriptografi di mana cipherteks menimbulkan kecurigaan bahwa pesan tersebut merupakan pesan rahasia. (Munir, 2006, hal: 302). Penyembunyian pesan rahasia ke dalam media penampung pasti mengubah kualitas media tersebut. Kriteria yang harus diperhatikan dalam penyembunyian pesan adalah (Munir, 2006, hal: 307): 1. Imperceptibility. Keberadaan pesan rahasia tidak dapat dipersepsi oleh inderawi. Misalnya, jika covertext berupa citra, maka penyisipan pesan membuat citra stegotext sukar dibedakan oleh mata dengan citra covertext-nya. Jika covertext berupa audio (misalnya berkas mp3, wav, midi, dan sebagainya), maka indera telinga tidak dapat mendeteksi perubahan pada audio stegotext-nya. 2. Fidelity. Mutu media penampung tidak berubah banyak akibat penyisipan. Perubahan tersebut tidak dapat dipersepsi oleh inderawi. Misalnya, jika covertext berupa citra, maka penyisipan pesan membuat citra stegotext sukar dibedakan

oleh mata dengan citra covertex-nya. Jika covertext berupa audio (misalnya berkas mp3, wav, midi, dan sebagainya), maka audio stegotext tidak rusak dan indera telinga tidak dapat mendeteksi perubahan tersebut. 3. Recovery. Pesan yang disembunyikan harus dapat diungkapkan kembali (reveal). Karena tujuan steganografi adalah data hiding, maka sewaktu-waktu pesan rahasia di dalam stegotext harus dapat diambil kembali untuk digunakan lebih lanjut. 2.3 GIF Graphics Interchange Format atau yang sering disingkat GIF adalah sebuah format berkas citra yang diperkenalkan pada tahun 1987 oleh CompuServe untuk menggantikan format RLE yang hanya mampu menampilkan gambar dengan warna hitam dan putih saja. GIF adalah salah satu format berkas citra yang paling sering ditemui di dunia digital. Hal ini terjadi karena format ini berukuran relatif kecil. Sebagai contoh untuk citra yang sama, berkas dengan format GIF dapat berukuran lebih kecil jika dibandingkan dengan format JPG. Hal ini disebabkan karena file GIF hanya menggunakan 256 palet warna. Sehingga tentunya ukuran file akan lebih kecil. Namun 256 palet warna tersebut tidak mutlak hanya 256 warna tertentu. Warna tersebut dapat dipilih dari 24-bit palet warna RGB atau dapat disimpulkan bahwa berkas dengan format GIF akan membuang palet warna yang tidak diperlukan dan mengambil hanya 256 palet warna yang diperlukan. (Penalosa, 2005) Format gambar GIF memiliki dua versi, yaitu GIF87a dan GIF89a. GIF87a adalah versi pertama dari format GIF yang berupa gambar statis. CompuServe kemudian memperkenalkan versi lanjutan, yaitu GIF89a. GIF89a dapat menampilkan gambar dinamis (animasi) dan latar belakang transparan.

Gambar 2.2 Citra dengan format JPEG (6 KB) Gambar 2.3 Citra dengan format GIF (5 KB) Dari perbandingan dua buah gambar diatas terlihat jelas bahwa citra dengan format GIF memiliki ukuran berkas yang lebih kecil 1 KB untuk citra yang sama. Bahkan jika dilihat secara lebih teliti lagi maka dapat dilihat bahwa citra pada Gambar 2 memiliki hasil yang lebih baik dari pada citra pada Gambar 1. Hal ini terjadi karena GIF menggunakan tipe kompresi data yang berbeda dengan JPG. GIF menggunakan tipe kompresi yang sering disebut lossless. Hal ini berarti bahwa citra tidak mengalami kehilangan kualitas ketika dikompresi. Sedangkan pada JPG tipe kompresi yang digunakan adalah lossy sehingga citra mengalami pengurangan kualitas ketika dikompresi. Memang berkas JPG dapat berkurang lebih kecil lagi ketimbang file GIF

namun kualitas citra yang dihasilkan akan sangat menurun seperti pada gambar dibawah ini. Gambar 2.4 Citra dengan format JPEG (4 KB) Format GIF juga memiliki kekurangan. Format ini jarang sekali digunakan untuk citra fotografi karena hanya dapat menampung 256 buah warna sementara citra fotografi biasanya menggunakan lebih dari 256 warna. Jika citra fotografi direpresentasikan dalam format GIF maka citra tersebut akan mengalami penurunan kualitas yang banyak. (Penalosa, 2005)

Gambar 2.5 Citra berformat JPEG dengan kompresi sangat tinggi (26,1 KB) Gambar 2.6 Citra berformat GIF dengan palette WebSafe (21,6 KB) Dapat dilihat dari kedua gambar fotografi di atas bahwa gambar dengan format JPEG memiliki kualitas yang baik. Berbeda dengan gambar berformat GIF yang memiliki detail warna yang buruk. (Luthfi, 2009) 2.4 Algoritma Gifshuffle Salah satu algoritma steganografi yang dapat digunakan untuk menyisipkan pesan pada citra berformat GIF adalah algoritma Gifshuffle. Algoritma Gifshuffle dibuat oleh Matthew Kwan, seorang sarjana ilmu komputer dari University of Melbourne yang kemudian mendirikan sebuah perusahaan yang bergerak di bidang enkripsi surat elektronik bernama Unicypt Pty Ltd. (Penalosa, 2005) Sesuai namanya, Gifshuffle akan melakukan shuffle atau pengacakan terhadap palet warna dari sebuah berkas GIF, sehingga bisa diartikan bahwa Gifshuffle adalah algoritma yang memanfaatkan penukaran posisi ke 256 palet warna dalam berkas citra berformat GIF. Penukaran posisi memungkinkan diperolehnya sebuah informasi berkaitan dengan perbedaan posisi awal dengan posisi akhir. (Ariyus, 2009)

Proses penyandian pada algoritma Gifshuffle didasarkan pada fakta bahwa susunan warna pada palet warna citra GIF tidak mempengaruhi bagaimana citra terlihat. Dua citra GIF dengan susunan palet warna yang berbeda dapat terlihat sama. Misalkan ada sebuah kumpulan berisi 52 buah kartu, maka ada sebanyak 52 faktorial (52!) cara untuk mengurutkan kumpulan tersebut, yang berarti bahwa setiap urutan tertentu dari kartu dapat mewakili sebuah angka pada rentang 0 sampai dengan (52!-1). Dengan kata lain jika diberikan n buah kartu, kita dapat menyimpan informasi setidaknya log 2 (n!) bit sesuai dengan urutan kartu-kartu tersebut. Citra GIF mengandung palet warna maksimal sebanyak 256 warna, sehingga penyimpanan pesan maksimum dari citra GIF menggunakan algoritma Gifshuffle tanpa kompresi adalah (Kwan, 2003): bit = 209 byte 2.5 Kompleksitas Waktu dan Notasi Big-O Dalam aplikasinya, setiap algoritma memiliki dua buah ciri khas yang dapat digunakan sebagai parameter pembanding, yaitu jumlah proses yang dilakukan dan jumlah memori yang digunakan untuk melakukan proses. Jumlah proses ini dikenal sebagai kompleksitas waktu yang disimbolkan dengan T(n), sedangkan jumlah memori ini dikenal sebagai kompleksitas ruang yang disimbolkan dengan S(n). Kenyataannya, jarang sekali kita membutuhkan kompleksitas waktu yang detil dari suatu algoritma. Biasanya yang kita butuhkan hanyalah bagian paling signifikan dari kompleksitas waktu yang sebenarnya. Kompleksitas waktu ini dinamakan kompleksitas waktu asimptotik yang dinotasikan dengan O (O-besar atau Big-O). Kompleksitas waktu asimptotik ini diperoleh dengan mengambil term terbesar dari suatu persamaan kompleksitas waktu. (Rheinadi, 2009)

Misalnya jika diperoleh waktu eksekusi dari suatu algoritma T(n) adalah sebanyak 5n 3 +4n+3 langkah untuk besar input sebesar n, maka akan lebih mudah untuk menghapus pangkat yang kecil seperti 4n dan 3 karena keduanya tidak terlalu signifikan terhadap input n. Koefisien 5 pada 5n 3 juga dihilangkan dengan anggapan bahwa komputer beberapa tahun ke depan akan menjadi 5 kali lipat lebih cepat dari komputer sekarang, sehingga keberadaan koefisien 5 juga tidak terlalu signifikan. Maka waktu yang diperlukan oleh algoritma tersebut untuk memproses input sebesar n adalah n 3, atau biasa dituliskan Big-O=n 3. (Dasgupta et al, 2008) Notasi Big-O yang sering dijumpai pada algoritma adalah (Pratama, 2010. hal: 21-22): 1. O(1) constant time Kompleksitas O(1) terdapat pada algoritma yang menghasilkan nilai selalu tetap tanpa bergantung kepada banyak masukan. 2. O( 2 log n) logarithmic time Algoritma yang berdasarkan pada binary tree biasanya memiliki kompleksitas O(log n). 3. O(n) linear time Algoritma dengan kompleksitas O(n) membutuhkan 1 kali proses untuk masingmasing masukan. 4. O(n 2 log n) linearithmic time Kompleksitas O(n log n) terdapat pada algoritma yang memecahkan masalah menjadi masalah yang lebih kecil, lalu menyelesaikan tiap masalah secara independen. 5. O(n 2 ) quadratic time Umumnya algoritma dengan kompleksitas O(n 2 ) melibatkan proses perulangan bersarang (nested loop). 6. O(n 3 ) cubic time Algoritma dengan kompleksitas O(n 3 ), mirip dengan O(n 2 ), namun menggunakan loop bersarang sebanyak 3 kali. Algoritma jenis ini hanya cocok jika n kecil. Jika n besar, waktu yang dibutuhkan akan sangat lama.

7. O(2 n ) exponential time Salah satu algoritma yang mempunyai kompleksitas O(2 n ) adalah brute force dalam menebak suatu password. Setiap penambahan karakter, akan melipatgandakan waktu yang dibutuhkan. 8. O(n!) factorial time O(n!) merupakan kompleksitas yang sangat cepat pertumbuhan waktu yang diperlukannya. Algoritma ini memproses tiap masukan dan menghubungkannya dengan n-1 masukan lainnya. 2.6 Quicksort Menurut Cormen et al (1989) quicksort adalah salah satu algoritma pengurutan yang berdasarkan pada metode divide-and-conquer. Metode ini membagi masalah menjadi beberapa sub masalah yang mirip dengan masalah utama tetapi dengan skala yang lebih kecil. Sub masalah tersebut kemudian diselesaikan kemudian menggabungkan semua solusi sub masalah untuk menghasilkan solusi masalah utama. Berikut ini merupakan algoritma quicksort dalam bentuk pseudo-code: quicksort(a,p,r) if p<r then q partition (A,p,r) quicksort(a,p,q) quicksort(a,q+1,r) partition(a,p,r) x A[p] i p-1 j r+1 while true do repeat j j-1 until A[j] x repeat i i+1

until A[i] x if i<j then exchange A[i] A[j] else return j Pertama-tama algoritma ini akan menjadikan x = A[p] dari array A[p..q] sebagai elemen pivot. Pivot ini membagi array A menjadi dua bagian A[p..i] dan A[j..r] sedemikian hingga setiap elemen A[p..i] lebih kecil atau sama dengan x dan setiap elemen A[j..r] lebih besar atau sama dengan x. Kemudian inisialisasi i dan j menjadi i=p-1 dan j=r+1, sehingga kedua bagian kosong. Pada bagian loop while, index j mengalami pengurangan, dan index i mengalami kenaikan sampai A[i] x A[j]. Jika A[i] terlalu besar untuk berada pada bagian array yang kecil dan A[j] terlalu kecil untuk berada pada bagian array yang besar maka kita dapat memperluas kedua bagian ini dengan cara menukar posisi antara A[i] dan A[j]. Bagian loop while, berulang sampai i j, dimana array A[p..r] telah dibagi menjadi dua sub array A[p..q] dan A[q+1..r] dimana p q < r, sehingga tidak ada elemen dari A[p..q] yang lebih besar dari elemen bilangan A[q+1..r]. Nilai q = j kemudian dikembalikan pada akhir procedure. Waktu eksekusi dari algoritma quicksort bergantung pada apakah kedua partisi array seimbang atau tidak. Kondisi terburuk (worst-case) untuk quicksort terjadi ketika prosedur partition menjadikan sub array pertama terdiri dari n-1 elemen dan sub array kedua hanya terdiri dari 1 elemen. Asumsikan bahwa ketidakseimbangan pembagian ini terjadi pada setiap iterasi pada algoritma, maka waktu eksekusi dari algoritma ini pada kondisi terburuk adalah O(n 2 ). Jika prosedur partisi menghasilkan dua bagian dari array A masing-masing memiliki n/2 buah elemen, maka algoritma quicksort menjadi lebih cepat. Dalam kondisi ini maka waktu eksekusinya adalah O(n log n).