Pseudocode Teknik Pemecahan Kunci Algoritma Rivest Shamir Adleman (RSA) Dengan Menggunakan Metode Kraitchik

3.4. Pseudocode

3.4.1. Pseudocode pemecahan kunci RSA metode Kraitchik Pseudocode „Function Kraitchik‟ adalah implementasi metode Kraitchik yaitu memfaktorkan kunci publik n menjadi faktor perkaliannya atau faktor kunci p,q. Function KraitchikBigInteger n { found = false x = ceil Sqrtn k = 1 while found { if IsSquarex x - k n x x - k n = 0 { y = Sqrtx x - k n if x + y - k n = 0 x - y - k n = 0 { p = x + y k q = x - y if 0 p p n 0 q q n found = true; } k++ } x++ } return p,q } Gambar 3.8 Pseudocode pemecahan kunci RSA metode Kraitchik Berikut ini adalah penjelasan tahapan pseudocode pemecahan kunci RSA metode Kraitchik pada Gambar 3.8: 1. Input kunci publik n yang merupakan bilangan bulat bertipe data BigInteger yaitu hasil perkalian dua bilangan prima p,q. function KraitchikBigInteger n 2. Inisialisasi variabel boolean found = false, variabel x = √n yang dibulatkan dan variabel k =1. found = false x = ceil Sqrtn k = 1 3. Lakukan perulangan while sampai syarat variabel found = true terpenuhi. while found 4. Periksa apakah x 2 – k.n adalah akar sempurna dan x 2 – k.n ≠ 0. Jika terpenuhi lanjutkan dengan inisialisasi variabel y sama dengan √x 2 – k.n kemudian lakukan tahap 5. Jika tidak terpenuhi maka increment nilai variabel x. if IsSquarex x - k n x x - k n = 0 y = Sqrtx x - k n x++ Universitas Sumatera Utara 5. Periksa apakah x + y – k.n ≠ 0 dan x – y – k.n ≠ 0. Jika terpenuhi maka hitung p = p + qk dan q = p – q. Jika tidak terpenuhi maka increment nillai variabel k dan lanjutkan ke tahap 6. if x + y - k n = 0 x - y - k n = 0 p = x + y k q = x – y 6. Periksa apakah 0 p n dan 0 q n. Jika terpenuhi maka inisialisasi variabel boolean found = true dan lanjutkan ke tahap 7. Jika tidak terpenuhi maka kembali ke tahap 5. if 0 p p n 0 q q n found = true; 7. Output nilai variabel p dan q. return p,q 3.4.2. Pseudocode menghitung kunci publik e Pseudocode „Function Publik_e‟ adalah implementasi penghitungan kunci publik e yaitu kunci publik e yang relatif prima terhadap ɸn atau Gcd e, ɸn = 1. Function Publik_dBigInteger totien totien = p-1q-1 { e = 2 while GCDtotien, E = 1 { e++ } return e } Gambar 3.9 Pseudocode menghitung kunci publik e Berikut ini adalah penjelasan tahapan pseudocode menghitung kunci publik e pada Gambar 3.9: 1. Input bilangan ɸn yang bertipe data BigInteger yaitu ɸn = p – 1.q – 1. Function Publik_dBigInteger totien totien = p-1q-1 2. Inisialisasi variabel e = 2 dan lakukan perulangan while yaitu increment nilai variabel e sampai syarat e relatif prima terhadap ɸn terpenuhi. e = 2 while GCDtotien, E = 1 { e++ } 3. Output nilai variabel e. Universitas Sumatera Utara return e 3.4.3. Pseudocode menghitung kunci privat d Pseudocode „Function Privat_d‟ adalah implementasi penghitungan kunci publik d yaitu menghitung invers dari kunci publik e modulo ɸn d = e -1 mod ɸn Invers modulo extended Euclidean menghitung r = ax + by dan Gcda,b = 1 a = kunci publik e dan b = ɸn. Substitusikan r i = ax i + by i ke dalam r i = r i-2 – q i r i-1 menjadi: r i = ax i-2 + by i-2 – q i ax i-1 + by i-1 atau r i = a x i-2 – q i x i-1 + b y i-2 – q i y i-1 Untuk selanjutnya hitung x i = x i-2 – q i x i-1 dan y i = y i-2 – q i y i-1 secara berulang sampai r i = Gcde, ɸn = 1, sehingga didapat kunci privat d = x i . Function Privat_dE,totien modInverse extended Euclidean { x = 1, y = 0, xLast = 0, yLast = 1 a = E, b = totien while a = 1 { q = b a r = b a c = xLast - q x d = yLast - q y xLast = x, yLast = y x = c, y = d b = a, a = r } d = x + totien totien return d } Gambar 3.10 Pseudocode menghitung kunci privat d Berikut ini adalah penjelasan pseudocode menghitung kunci privat d pada Gambar 3.10: 1. Input kunci publik e dan ɸn yang bertipe data BigInteger. 2. Inisialisasi variabel x = 1, y = 0 dan xLast = 0, yLast = 1, serta variabel a = kunci publik e dan b = ɸn. 3. Lakukan perulangan while dengan menghitung x i = x i-2 – q i x i-1 dan y i = y i-2 – q i y i- 1 sampai a i = r i = Gcda,b = 1. Jika terpenuhi lanjutkan ke tahap 4. q = b a r = b a c = xLast - q x Universitas Sumatera Utara d = yLast - q y xLast = x, yLast = y x = c, y = d b = a, a = r 4. Output nilai variabel d merupakan kunci privat d. d = x + totien totien return d 3.4.4. Pseudocode dekripsi RSA Pseudocode „Function Dekripsi_RSA‟ adalah implementasi dekripsi RSA yaitu mendekripsikan ciphertext desimal ASCII dengan rumus m = c d mod n menggunakan kunci privat d. Function Dekripsi_RSA c, d, n c = ciphertext read as line { for i = 0; i c.Length; i++ { m[i] = modExp c[i],d,n m[i] = c[i] d mod n } convertTo_stringASCII m[i] return m } Function modExp c,d,n { z = 1 for i = 1; i = d; i++ { z = c.z mod n } return z } Gambar 3.11 Pseudocode Dekripsi RSA Berikut ini adalah penjelasan tahapan pseudocode dekripsi RSA pada Gambar 3.11: 1. Input kunci publik n, kunci privat d dan input ciphertext c yang terdiri dari desimal ASCII sebagai baris line. Function Dekripsi_RSA n, d, c c = ciphertext read as line 2. Lakukan pengulangan for untuk mendekripsi ciphertext c menjadi plintext m dengan rumus m = c d mod n. for i = 0; i c.Length; i++ { m[i] = c[i] d mod n } Untuk menghitung m = c d mod n dapat menggunakan function modExp c, d, n sebagai berikut: Universitas Sumatera Utara Function modExp c,d,n { z = 1 for i = 1; i = d; i++ { z = c.z mod n } return z } 3. Ubah plaintext yang masih dalam bentuk desimal ASCII menjadi plaintext m dalam bentuk string atau karakter ASCII dan lakukan output berupa plaintext variabel m. convertTo_stringASCII m[i] return m

3.5. Perancangan Antarmuka Sistem System Interface