Oleh: I Kadek Satriawan (!"#$"$""#% &URUSAN TEKNOLOGI INFORMASI FAKULTAS TEKNIK ' UNIVERSITAS UDA(ANA )UKIT &IM)ARAN !"# * Te+ri Dalam teori bilangan, algoritma Pohlig-Hellman bertujuan khusus untuk untuk menghitung logaritma diskrit dalam kelompok multiplikatif yang diurutkan berupa bilangan bulat (Thiong- Ly, 199!" #lgoritma ini ditemukan oleh $oland %il&er, namun pertama kali diterbitkan oleh %tephen Pohlig dan 'artin Hellman" #lgoritma $%# merupakan bagian dari kriptografi asimetris yang dijabarkan pertama sekali oleh tiga orang alumni dari 'assa(husetts )nstitute of Te(hnology yaitu $on $i&est, #di %hamir dan Len #dleman pada tahun 19**" Huruf $%# tersebut berasal dari inisial nama mereka yaitu $i&est, %hamir dan #dleman" #lgoritma $%# adalah algoritma yang menggunakan enkripsi kun(i publik" #lgoritma $%# banyak digunakan dan diper(aya dalam mengamankan data atau informasi menggunakan kun(i dengan bilangan yang (ukup besar" #lgoritma tersebut dipatenkan oleh 'assa(husetts )nstitute of Te(hnology pada tahun 19+" ,eamanan algoritma $%# terletak pada sulitnya memfaktorkan bilangan yang besar menjadi faktor-faktor prima" Pemfaktoran dilakukan untuk memperoleh kun(i pribadi" %ejauh ini belum ditemukan algoritma yang lebih baik dari $%# (-illiam, .//0!" Dengan melakukan pembangkitan dua bilangan prima, algoritma $%# membutuhkan 1aktu yang (ukup banyak dalam melakukan prosesnya" 2amun algoritma $%# lebih banyak dikembangkan karena konsep yang (ukup rumit untuk ditembus" %alah satu pengembangan #lgoritma $%# adalah dengan konsep multiple-key" 'ultiple-key adalah penambahan kun(i- kun(i pada proses enkripsi dan dekripsi yang digunakan untuk meningkatkan keamanan data" (%h(neider, .//3! ,onsep multiple-key dapat digunakan dalam untuk algoritma asimetris karena dapat meningkatkan kualitas dan kekuatan dari kun(i yang sudah ada sebelumnya" Pengembangan dari algoritma Pohlig-Hellman dengan multiple-key adalah ide yang dikembangkan dalam tulisan ini" Penerapan multiple-key pada algoritma Pohlig-Hellman diharapkan akan dapat meningkatkan kehandalan algoritma dalam keamanan data" #danya beberapa kesamaan konsep antara algoritma Pohlig-Hellman dan algoritma $%# dalam proses pembangkitan bilangan prima dan proses yang lainnya menjadi dasar untuk membuat ran(angan model #lgoritma Pohlig-Hellman multiple-key !* K+de Pr+,ra- Pada (ontoh ,ode Program 4erikut 'enggunakan 'etode pembangkitan bilangan dua bilangan prima sebagai berikut" import java.util.Scanner; public class Prima { Scanner input = new Scanner(System.in); private int p, q, kE, kD, n, n_tot; private long c, m; Prima() { do { System.out.print(masukkan nilai p (!arus "ilan#an prima)$ ); p = input.ne%t&nt(); ' while ((isPrima(p)); do { System.out.print(masukkan nilai q (!arus "ilan#an prima)$ ); q = input.ne%t&nt(); ' while ((isPrima(q)); System.out.print()nmasukkan nilai input untuk *m*$ ); m = input.ne%t&nt(); pem"an#kitan+unci(p, q); System.out.print()n!asil enkripsi untuk m = , m , , maka c = , en(m)); System.out.print()n!asil -ekripsi untuk c = , c , , maka m = , -e(c)); ' void pem"an#kitan+unci(int p, int q) { n = p . q; // set n n_tot = (p 0 1) . (q 0 1); do { // set +- kD = (int) (1 , 2at!.random() . n); ' while ((isPrime(kD) 33 kD 4 15); while (kE . kD 6 n_tot (= 1) kE,,; ' ' long en(long m) { c = (long) 2at!.pow(m, kE) 6 n; return c; ' long -e(long c) { m = (long) 2at!.pow(c, kD) 6 n; return m; ' 7oolean isPrima(int cek) { boolean prime = true; for (int i8ek = 9; i8ek : cek 33 cek 4 9; i8ek,,) { if (cek 6 i8ek == ;) { prime = false; break; ' ' return prime; ' public static void main(Strin#<= ar#s) { Prima app = new Prima(); ' ' K+de Pr+,ra- !" ,ode 5ntuk Program 5tama .* Kel/aran Pr+,ra- Ga-0ar * ,eluaran Program Pembankitan 4ilangan Prima