3.3.5 Pseudocode dan Flowchart Modulo Inverse
Invers modulo pada penelitian ini digunakan untuk membantu perhitungan a pangkat negatif b modulo c yang akan diterapkan pada metode Baby-step Giant-step. Jika a
dan c relatif prima, maka invers modulo dapat ditemukan. Berikut pseudocode dari invers modulo.
1. function inverse_modulo:
2. n = 1
3. while True:
4. if n a mod c == 1:
5. break
6. else:
7. n += 1
8. return n
Baris 3 sampai 7 pada pseudocode akan memeriksa apakah
n
merupakan invers modulo dari a
-1
mod c. Jika
n a mod c == 1
maka perulangan akan dihentikan dan nilai
n
akan dikembalikan. Jika tidak, nilai
n
akan ditambahkan hingga persyaratan
n a mod c == 1
dipenuhi. Berikut flowchart algoritma invers modulo yang dapat ditunjukkan dari Gambar
3.11.
Gambar 3.11 Flowchart Modulo Inverse
Universitas Sumatera Utara
3.3.6 Pseudocode dan Flowchart Baby-step Giant-step
Pada penelitian ini, metode Baby-step Giant-step digunakan untuk mencari kunci rahasia dari algoritma kriptografi ElGamal, dengan berasumsikan hacker telah
memiliki informasi kunci publik p,
� , �
.
Kunci privat akan dicari dengan langkah pertama yaitu membuat dua buah daftar. Yang pertama adalah daftar Baby-step,
dimana daftar tersebut akan menghitung �
j
mod p untuk 0 ≤ j ≤ N. Lalu daftar kedua
akan menghitung daftar Giant-step dengan rumus � �
-Nk
mod p untuk 0 ≤ k ≤ N. N
adalah hasil perhitungan dari √� − 1 + 1, dikarenakan langkah yang terjadi pada
algoritma ini hanya sekitar √�. Berikut adalah pseudocode dari algoritma Baby-step
Giant-step
1. function BSGS:
2. p = public key prime number
3. alpha = public key alpha
4. y = public key alphaa
5. 6.
N = sqrtp-1 7.
N = N + 1 8.
9. bsList = []
10. gsList = []
11. 12.
for j in range0,N+1: 13.
value = alpha j mod p 14.
bsList.appendvalue 15.
16. inv = inverse_modulop, alpha
17. 18.
for k in range0,N+1: 19.
power = inv Nk mod p 20.
value = ypower mod p 21.
gsList.appendvalue 22.
23. x1,x2 =0,0
24. for r in bsList:
25. if r == value:
26. x1 = bsList.indexr
Universitas Sumatera Utara
27. x2 = Nk
28. break
29. 30.
if x1 + x2 = 0: 31.
break 32.
33. a = x1 + x2
Pada baris 2 sampai 4, sistem menerima inputan berupa kunci publik. Kemudian di baris 13 hingga 15 sistem melakukan perhitungan terhadap daftar
dari Baby-step dan menyimpannya ke dalam sebuah list. Pada baris 17, sistem melakukan perhitungan invers modulo dari kunci publik p dan alpha. Dan yang
terakhir pada baris 19 hingga 32, sistem melakukan perhitungan terhadap daftar dari Giant-step dan disimpan juga ke dalam sebuah list sekaligus dicari kecocokan
nilai dengan list dari Baby-step. Jika kecocokan ditemukan, maka perhitungan akan dihentikan, dan nilai index dari Baby-step dan nilai dari
Nk
akan dijumlahkan. Berikut flowchart algoritma Baby-step Giant-step yang dapat ditunjukkan dari
Gambar 3.12.
Universitas Sumatera Utara
Gambar 3.12 Flowchart Baby-step Giant-step
Universitas Sumatera Utara
3.4 Perancangan Antarmuka Interface