Pseudocode dan Flowchart Modulo Inverse Pseudocode dan Flowchart Baby-step Giant-step

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