Algoritma Knapsack LANDASAN TEORI

X 4 5 6 7 8 9 6 Dengan mencari padanan karakter pada Tabel 2.6 maka kita dapatkan pesan HARAHAP289.

2.3 Algoritma Knapsack

Algoritma knapsack merupakan algoritma kunci publik asimetris yang keamanannya terletak pada sulitnya memecahkan persoalan knapsack knapsack problem. Knapsack problem merupakan permasalahan bagaimana cara mengisi knapsack ransel yang mempunyai kapasitas tertentu dengan sekumpulan benda yang berbeda- beda ukurannya sehingga knapsack terisi penuh sesuai dengan kapasitas Kromodimoeljo, S. 2010. Masing-masing benda memiliki nilai dan berat yang sudah diasosiasikan di dalamnya. Jadi, nilai pada seluruh item dapat dimaksimalkan dan beratnya tidak menambah kapasitas total pada knapsack Agarwal, Ashish. 2011. 2.3.1 knapsack problem Jika m adalah bobot knapsack dan n adalah banyaknya objek yang masing-masing mempunyai bobot W 1 , W 2 , …, W n . tentukan nilai b i untuk i = 1, 2, 3, …, n sedemikian sehingga M = b 1 W 1 + b 2 W 2 + …. + b n W n …………………………… Pers 1 Yang dalam hal ini b i hanya bernilai 0 dan 1. Jika b = 1 maka objek i dimasukkan kedalam knapsack, sebaliknya jika b = 0, maka tidak dimasukkan ke dalam knapsack Sembiring, Dira Fahrendy. 2013. Ada dua jenis algoritma knapsack, yaitu: a Algoritma knapsack sederhana Ide dasar dari knapsack ini adalah mengkodekan pesan sebagai rangkaian solusi dari persoalan knapsack. Setiap bobot W 1 dalam persoalan knapsack merupakan kunci privat sedangkan bit-bit plainteks merupakan b 1 . b Superincreasing knapsack Universitas Sumatera Utara Algoritma yang digunakan untuk membangkitkan kunci publik dan kunci privat dalam Superincreasing knapsack: 1 Tentukan barisan superincreasing dimana setiap nilai di dalam barisan lebih besar daripada jumlah semua nilai sebelumnya. 2 Jumlahkan semua nilai di dalam barisan, kemudian bandingkan total nilai dengan nilai terbesar di dalam barisan. Jika nilai terbesar lebih kecil atau sama dengan total nilai maka ia dimasukkan ke dalam knapsack, jika tidak maka ia tidak dimasukkan. 3 Kurangi total nilai dengan nilai terbesar yang telah dimasukkan. Kemudian bandingkan total nilai sekarang dengan nilai terbesar selanjutnya, demikian seterusnya sampai semua nilai dalam barisan selesai dibandingkan. 4 Jika bobot total sama dengan nol maka terdapat solusi persoalan superincreasing knapsack . sebaliknya jika bobot total tidak sama dengan nol maka tidak ada solusinya. 2.3.2 Enkripsi superincreasing knapsack Mula-mula plainteks dipecah menjadi blok bit yang panjangnya sama dengan kardinalitas barisan kunci publik. Kalikan setiap bit di dalam blok dengan elemen yang berkoresponden dengan nilai di dalam kunci publik. Contoh: Kita gunakan kunci ADFGVX cipher diatas sebagai barisan plainteks yaitu : ILKOM Misal A = 0, B = 1, …. Z = 25, maka: I = 8, biner 01000 L = 11, biner 01011 K = 10, biner 01010 O = 14, biner 01110 M = 12, biner 01100 Sehingga didapatkan plainteks: 0100001011010100111001100 yang akan di enkripsi menggunakan kunci privat sebagai berikut: Barisan superincreasing w ={1, 2, 4, 8, 16} m = 75 n = 14 maka kunci publik dapat dicari dengan menggunakan rumus w.n mod m. Universitas Sumatera Utara Sehingga: 1 x 14 mod 75 = 14 2 x 14 mod 75 = 28 4 x 14 mod 75 = 56 8 x 14 mod 75 = 37 16 x 14 mod 75 = 74 Maka kunci publik yang didapatkan adalah {14, 28, 56, 37, 74}. Kemudian plainteks dibagi menjadi blok dengan panjang 5 panjang kunci publik, kemudian setiap bit di dalam blok dikalikan dengan elemen yang berkoresponden dengan kunci publik, sebagai berikut: Blok plainteks 1: 01000 Kriptogram: 1 x 28 = 28 Blok plainteks 2: 01011 Kriptogram: 1 x 28 + 1 x 37 + 1 x 74 = 139 Blok plainteks 3: 01010 Kriptogram: 1 x 28 + 1 x 37 = 65 Blok plainteks 4: 01110 Kriptogram: 1 x 28 + 1 x 56 + 1 x 37 = 121 Blok plainteks 5: 01100 Kriptogram: 1 x 28 + 1 x 56 = 84 Jadi, cipherteks yang dihasilkan: 28, 139, 65, 121, 84 2.3.3 Dekripsi superincreasing knapsack Untuk mendekripsikan cipherteks menjadi plainteks maka kita gunakan kunci privat, yaitu barisan superincreasing knapsack. Mula-mula penerima pesan menghitung n -1 , yaitu inversi n modulo m, sedemikian sehingga: n.n -1 ≡ 1 mod m , maka untuk mendekripsi cipherteks tersebut dengan menggunakan kunci privat {1, 2, 4, 8, 16} di dapatkan hasil inversi n modulo m seperti pada Tabel 2.7. Universitas Sumatera Utara Tabel 2.7. Perhitungan Inversi n modulo m n