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