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