3.3.4 Pseudocode dan Flowchart Dekripsi ElGamal
Pada tahap dekripsi, pesan hasil enkripsi ciphertext akan dikembalikan lagi ke bentuk aslinya. Pesan akan didekripsikan dengan menerima informasi kunci publik
dan kunci privat. Berikut adalah pseudocode dari algoritma dekripsi elgamal :
1. function decryptMessage:
2. message = readfileciphertext
3. message = message.split
4. 5.
messageInt = [] 6.
for item in message: 7.
messageInt.appendintitem 8.
9. alpha_exp_b = []
10. malpha_exp_b = []
11. 12.
alpha_exp_b = messageInt[0::2] 13.
malpha_exp_b = messageInt[1::2] 14.
15. p = public key prime number
16. a = private key
17. 18.
p_min_a = p - 1 - a 19.
20. n = lenalpha_exp_b
21. decrypt = []
22. decrypt_result = []
23. 24.
for i in range0,n: 25.
decrypt.appendalpha_exp_b[i]p_min_a mod p 26.
27. for i in range0,n:
28. times = malpha_exp_b[i] decrypt[i]
29. decrypt_result.appendtimes mod p
30. 31.
pesan = joinchri for i in decrypt_result
Pada pseudocode baris 2 dan 3, sistem menerima inputan pesan ciphertext yang kemudian dipecah menjadi karakater-karakter dan disimpan pada variabel
Universitas Sumatera Utara
messageInt
. Lalu karakter karakter ciphertext akan dibagi dua bagian, yang pertama disimpan di variabel
alpha_exp_b
dan yang kedua disimpan di variabel
malpha_exp_b
. Karakter yang disimpan di variabel pertama adalah karakter yang berada di posisi genap, sedangkan karakter di variabel kedua berada di posisi ganjil.
Kemudian sistem menerima inputan berupa bilangan prima dari kunci publik, dan kunci privat ElGamal. Baris 18 sampai 29 menunjukkan proses perhitungan
karakter karakter ciphertext diubah kembali menjadi representasi numerik masing- masing karakter. Dan yang terakhir pada baris 31, karakter karakter tersebut akan
diubah kembali menjadi representasi alfabetnya masing-masing lalu dikembalikan menjadi satu pesan asli plaintext.
Berikut flowchart algoritma dekripsi ElGamal yang dapat ditunjukkan dari Gambar 3.10.
Universitas Sumatera Utara
Gambar 3.10 Flowchart Dekripsi ElGamal
Universitas Sumatera Utara
3.3.5 Pseudocode dan Flowchart Modulo Inverse