ElGamal ElGamal Kurva Eliptik

3. ElGamal

a. Prosedur Yang Digunakan Secara Rutin mencari , , dan a p := nextprimerand1..1040; p := 9574006709478958762709029785327385064807; alpha := 5; a := rand10..p-10 mod p; a := 665638090635425982769337333168305062441; beta := Poweralpha,a mod p; b. Kunci Publik dan Kunci Privat KunciPublik := [p,alpha,beta]; KunciPribadi := a; c. Enkripsi Pesan := 91819250104; k := rand10..p-10; k := 1026468764312794860407049035579406321411; gama := Poweralpha,k mod p; Topeng := Powerbeta,k mod p; delta := TopengPesan mod p; Kirim := [gama,delta]; d. Dekripsi Topeng := PowerKirim[1],a mod p; BukaTopeng := 1Topeng mod p; PesanDiTerima := Kirim[2]BukaTopeng mod p; PesanDiTerima := Kirim[2]Power1Kirim[1],a mod p mod p; Menezes et al. 1996

4. ElGamal Kurva Eliptik

a. Prosedur Yang Digunakan Secara Rutin Prosedur yang digunakan sama dengan kurva eliptik, hanya saja ditambah prosedur kasus supersingular dan non-supersingular untuk mencari kurva, titik, proses adisi, dan kelipatan titik untuk masing-masing kasus. b. Pembuatan Kunci withRandomTools: 1. Supersingular Privat:=Generateintegerrange=1..99; m:=10; K:=ECAcakABCSsm; alpha:=AcakPtSsK,m; beta:=MulPtBinSsalpha,Privat,K,m; Publik:=[alpha,beta]; 2. Non-Supersingular Privat:=Generateintegerrange=1..99; m:=10; K:=ECAcakABNsm; alpha:=AcakPtNsK,m; beta:=MulPtBinNsalpha,Privat,K,m; Publik:=[alpha,beta]; c. Enkripsi 1. Supersingular Pesan:=AcakPtSsK,m; k:=Generateintegerrange=1..99; Publik; gama:=MulPtBinSsPublik[1],k,K,m; N:=MulPtBinSsPublik[2],k,K,m; delta:=AddPtBinSsPesan,N,K,m; kirim:=[gama,delta]; 2. Non-Supersingular Pesan:=AcakPtNsK,m; k:=Generateintegerrange=1..99; Publik; gama:=MulPtBinNsPublik[1],k,K,m; N:=MulPtBinNsPublik[2],k,K,m; delta:=AddPtBinNsPesan,N,K,m; kirim:=[gama,delta]; d. Dekripsi 1. Supersingular kirim; w:=MulPtBinSskirim[1],Privat,K,m; w:=NegPtSsw,K,m; Terima:=AddPtBinSskirim[2],w,K,m; convertPesan=Terima,truefalse; digunakan untuk memastikan apakah Pesan sebelum dienkripsi sama dengan Pesan setelah didekripsikan. 2. Non-Supersingular kirim; w:=MulPtBinNskirim[1],Privat,K,m; w:=NegPtNsw,K,m; Terima:=AddPtBinNskirim[2],w,K,m; convertPesan=Terima,truefalse; digunakan untuk memastikan apakah Pesan sebelum dienkripsi sama dengan Pesan setelah didekripsikan. LAMPIRAN

1. Algoritme Aritmetika