• Tidak ada hasil yang ditemukan

1. Algoritme Aritmetika a. Prosedur UbahBinKeDes Deskripsi : Prosedur mengubah Vektor Biner ke Desimal dari Order Rendah ke Order Tinggi UbahBinKeDes

N/A
N/A
Protected

Academic year: 2021

Membagikan "1. Algoritme Aritmetika a. Prosedur UbahBinKeDes Deskripsi : Prosedur mengubah Vektor Biner ke Desimal dari Order Rendah ke Order Tinggi UbahBinKeDes"

Copied!
12
0
0

Teks penuh

(1)
(2)

1. Algoritme Aritmetika a. Prosedur UbahBinKeDes

Deskripsi : Prosedur mengubah Vektor Biner ke Desimal dari Order Rendah ke Order

Tinggi

UbahBinKeDes := proc( N::list )

local D1, D2 :: list, Des::integer;

D1:=map(x -> 2^x,[seq(i,i=0..(nops(N)-1))]): D2:=[seq(N[j]*D1[j],j=1..nops(N))]:

Des:=add( i, i=D2 ); end proc:

b. Prosedur UbahDesKeBin

Deskripsi : Prosedur mengubah Desimal ke Vektor Biner dari Order Rendah ke Order

Tinggi

UbahDesKeBin := proc(B::integer,m::integer) local K,KVek,Kv::list, i::integer:

K := B mod 2^m;

Kv:=convert(K,base,2):

KVek:=[op(Kv),seq(0*i,i=(nops(Kv)+1)..m)]: end proc:

c. Prosedur UbahBinKeSet

Deskripsi : Prosedur mengubah Vektor Biner ke dalam himpunan (dari Order Rendah

ke Order Tinggi)

UbahBinKeSet:= proc( Cr::list) local H::set, i,n::integer: n := nops(Cr): H:={}: for i from 1 to n do if Cr[i]=1 then H:=H union {i-1}: end if: end do: return(H): end proc: d. Prosedur UbahDesKeSet

Deskripsi : Prosedur mengubah bilangan desimal ke dalam bentuk himpunan UbahDesKeSet:=proc(n::integer) local X::list: X:=convert(n,base,2): UbahBinKeSet(X); end proc: e. Prosedur UbahSetKeDes

Deskripsi : Prosedur mengubah bentuk himpunan ke dalam bilangan desimal UbahSetKeDes := proc( N::set )

local D::set, Des::integer; D:=map(x -> 2^x,N):

Des:=add( i, i=D ); end proc:

f. Prosedur UbahSetKeBin

Deskripsi : Prosedur mengubah bentuk himpunan ke dalam Vektor Biner UbahSetKeBin := proc( N::set, m::integer )

local D::set, Des::integer; Des:=UbahSetKeDes(N):

UbahDesKeBin(Des,m); end proc:

g. Prosedur AcakSet

Deskripsi : Prosedur untuk membangkitkan himpunan acak dalam AcakSet:=proc(m::posint)

(3)

AcIn := rand(2^m): p:=AcIn():

UbahDesKeSet(p); end proc:

h. Prosedur AdisiSet

Deskripsi : Prosedur menjumlahkan dua himpunan AdisiSet:=proc(S::set,T::set)

return((S union T) minus (S intersect T)); end proc:

i. Prosedur ReduSet

Deskripsi : Prosedur menghilangkan nilai 0 pada vektor biner ReduSet:=proc(n::integer,m::posint)

local H,G,K,S::set, i,j,k::integer: S:=DatB[m]:

if n<0 or n>(2*m-2) then return(false): elif 0<=n and n<m then return({n}); else H:=map(x->(x+(n-m)),S); end if: return(H): end proc: j. Prosedur ModSet

Deskripsi : Prosedur untuk menentukan dimana merupakan set ModSet:=proc(T::set,m::posint)

local G,K,H,R::set, i::integer:

if max(op(T))>(2*m-2) then error end if; R:={seq(i,i=m..(2*m-2))}:

K:= T intersect R: G:=T:

for i while K<>{} do

H:=ReduSet(max(op(K)),m):

G:=AdisiSet(G minus {max(op(K))},H): K:= G intersect R:

end do: return(G); end proc: k. Prosedur KaliSet

Deskripsi : Prosedur untuk mengalikan set KaliSet:=proc(A::set,B::set) local H::set, i,j::integer: H:={}: for i in A do H:=AdisiSet(H,map(j->(j+i),B)): end do: return(H): end proc: l. Prosedur MultiSet

Deskripsi : Prosedur mengalikan set dengan menggunakan modulo MultiSet:=proc(A::set,B::set,m::integer) local H::set: H:=KaliSet(A,B): ModSet(H,m); end proc: m. Prosedur BagiSet

Deskripsi : Prosedur membagi set BagiSet:=proc(T::set,S::set)

local K,Q,R::set, i,r,s,t::integer: R:=T: Q:={}:

(4)

for i while r>=s do t:=r-s: Q:=Q union {t}: K:=KaliSet({t},S): R:=AdisiSet(K,R): r:=max(op(R)): end do: return([Q,R]); end proc: n. Prosedur InvSet

Deskripsi : Prosedur mencari invers dari set InvSet:=proc(T::set,m::integer)

local QA,QB,RA,RB,R,S,Tmp::set, L::list, i::integer: S:=DatB[m]:

if T={} then return("Tidak ada invers") end if: RA:=S union {m}: RB:=T: QA:={}: QB:={0}: L:=BagiSet(RA,RB): RA:=RB: RB:=op(2,L): for i while RB<>{} do Tmp:=QA: QA:=QB: R:=KaliSet(QB,op(1,L)): QB:=AdisiSet(Tmp,R): L:=BagiSet(RA,RB): RA:=RB: RB:=op(2,L): end do: return(QB); end proc: o. Prosedur DivSet

Deskripsi : Prosedur membagi A oleh B modulo m DivSet:=proc(A::set,B::set,m::integer) local iB::set: iB:=InvSet(B,m); MultiSet(A,iB,m); end proc: (Rosdiana 2009)

(5)

2. Konstruksi Aritmetika Kurva Eliptik

a. Prosedur Menentukan Kurva Eliptik 2^m dengan 1. Supersingular m:=10; ECAcakABCSs:=proc(m::posint) local A,B,C::set,i::integer; A:=AcakSet(m); B:=AcakSet(m); C:=AcakSet(m); for i while B={}do B:=AcakSet(m); end do;

for i while C={}do C:=AcakSet(m); end do; return ([A,B,C]); end proc: Contoh : K:=ECAcakABCSs(m); 2. Non-Supersingular ECAcakABNs:=proc(m::posint) local A,B::set,i::integer; A:=AcakSet(m); B:=AcakSet(m); for i while B={}do B:=AcakSet(m); end do; return ([A,B]); end proc: Contoh : K:=ECAcakABNs(m);

b. Prosedur Menentukan Titik-titik Kurva Eliptik 2^m 1. Supersingular

AcakPtSs:=proc(K::list,m::posint)

local X,Y,H,G,T,U,S::set, i,t::integer: X:=AcakSet(m); Y:=AcakSet(m); H:=MultiSet(K[3],Y,m); G:=MultiSet(Y,Y,m); H:=AdisiSet(G,H); G:=MultiSet(X,X,m); T:=MultiSet(X,G,m); H:=AdisiSet(H,T); U:=MultiSet(K[1],X,m); H:=AdisiSet(H,U); S:=AdisiSet(H,K[2]); for i while S<>{} do X:=AcakSet(m); Y:=AcakSet(m); H:=MultiSet(K[3],Y,m); G:=MultiSet(Y,Y,m); H:=AdisiSet(G,H);

(6)

G:=MultiSet(X,X,m); T:=MultiSet(X,G,m); H:=AdisiSet(H,T); U:=MultiSet(K[1],X,m); H:=AdisiSet(H,U); S:=AdisiSet(H,K[2]); end do: return([X,Y]); end proc: Contoh : P:=AcakPtSs(K,m); 2. Non-Supersingular AcakPtNS:=proc(K::list,m::posint)

local X,Y,H,G,T,U,S::set, i,t::integer: X:=AcakSet(m); Y:=AcakSet(m); H:=MultiSet(X,Y,m); G:=MultiSet(Y,Y,m); H:=AdisiSet(G,H); G:=MultiSet(X,X,m); T:=MultiSet(X,G,m); H:=AdisiSet(H,T); U:=MultiSet(K[1],G,m); H:=AdisiSet(H,U); S:=AdisiSet(H,K[2]); for i while S<>{} do X:=AcakSet(m); Y:=AcakSet(m); H:=MultiSet(X,Y,m); G:=MultiSet(Y,Y,m); H:=AdisiSet(G,H); G:=MultiSet(X,X,m); T:=MultiSet(X,G,m); H:=AdisiSet(H,T); U:=MultiSet(K[1],G,m); H:=AdisiSet(H,U); S:=AdisiSet(H,K[2]); end do: return([X,Y]); end proc: Contoh : P:=AcakPtNs(K,m);

c. Prosedur Aritmetika Kurva Eliptik 2^m 1. Supersingular AddPtBinSs:=proc(X::list,Y::list,K::list,m::posint) local A,B,T,S,L,H,G::set: if X=[{},{}] or Y=[{},{}] then A:=AdisiSet(X[1],Y[1]); B:=AdisiSet(X[2],Y[2]); return([A,B]); end if: T:=AdisiSet(X[2],Y[2]); if X[1]=Y[1] and T=K[3] then return([{},{}]);

elif X<>Y then

(7)

S:=AdisiSet(X[2],Y[2]): L:=DivSet(S,T,m): H:=MultiSet(L,L,m): H:=AdisiSet(H,T): G:=AdisiSet(H,X[1]): G:=MultiSet(G,L,m); G:=AdisiSet(G,X[2]): G:=AdisiSet(G,K[3]): return([H,G]); else T:=MultiSet(X[1],X[1],m): L:=AdisiSet(K[1],T): L:=DivSet(L,K[3],m): H:=MultiSet(L,L,m): G:=AdisiSet(H,X[1]): G:=MultiSet(G,L,m); G:=AdisiSet(G,X[2]): G:=AdisiSet(G,K[3]): return([H,G]); end if: end proc: Contoh : Infinity:=AddPtBinSs(P,nP,K,m); Q:=AcakPtSs(K,m); F:=AcakPtSs(K,m); Periksa Komutatif R:=AddPtBinSs(Q,F,K,m); S:=AddPtBinSs(F,Q,K,m); Periksa Assosiatif M:=AcakPtSs(K,m): V:=AddPtBinSs(F,M,K,m): C:=AddPtBinSs(M,Q,K,m): V:=AddPtBinSs(V,Q,K,m); V:=AddPtBinSs(F,C,K,m); 2. Non-Supersingular AddPtBinNs:=proc(X::list,Y::list,K::list,m::posint) local A,B,T,S,L,U::set: if X=[{},{}] or Y=[{},{}] then A:=AdisiSet(X[1],Y[1]); B:=AdisiSet(X[2],Y[2]); return([A,B]); end if: T:=AdisiSet(X[2],Y[2]); if X[1]=Y[1] and T=X[1] then A:={}:

B:={}:

return([A,B]); elif X<>Y then

U:=AdisiSet(X[1],Y[1]): S:=AdisiSet(X[2],Y[2]): L:=DivSet(S,U,m):

(8)

T:=MultiSet(L,L,m): A:=AdisiSet(L,T): A:=AdisiSet(A,K[1]): A:=AdisiSet(A,U): B:=AdisiSet(X[2],A): S:=AdisiSet(X[1],A): S:=MultiSet(S,L,m): B:=AdisiSet(B,S): return([A,B]); else S:=MultiSet(X[1],X[1],m): T:=DivSet(K[2],S,m): A:=AdisiSet(S,T): T:=DivSet(X[2],X[1],m): L:=AdisiSet(X[1],T): B:=MultiSet(A,L,m): B:=AdisiSet(B,S): B:=AdisiSet(A,B): return([A,B]); end if: end proc: Contoh : Q:=AcakPtNs(K,m); F:=AcakPtNs(K,m); Periksa Komutatif R:=AddPtBinNs(Q,F,K,m); R:=AddPtBinNs(F,Q,K,m); Periksa Assosiatif M:=AcakPtNs(K,m): V:=AddPtBinNs(F,M,K,m): C:=AddPtBinNs(M,Q,K,m): V:=AddPtBinNs(V,Q,K,m); V:=AddPtBinNs(F,C,K,m); d. Prosedur Negasi Titik

1. Supersingular

NegPtSs:=proc(P::list,K::list,m::posint) local H::set, i::integer:

H:=AdisiSet(P[2],K[3]): subsop(2=H,P); end proc: Contoh : nP:=NegPtSs(P,K,m); P; Infinity:=AddPtBinSs(P,nP,K,m); 2. Non-Supersingular NegPtNs:=proc(P::list,K::list,m::posint) local H::set, i::integer:

H:=AdisiSet(P[1],P[2]); subsop(2=H,P);

(9)

end proc: Contoh :

nP:=NegPtNs(P,K,m); P;

Infinity:=AddPtBinNs(P,nP,K,m); e. Prosedur Kelipatan titik P sebanya k kali

1. Supersingular

MulPtBinSs:=proc(P::list,k::integer,K::list,m::posint) local H,G,X::list, i::integer:

X:=convert(k,base,2); G:=P: H:=[{},{}]: if op(1,X)=1 then H:=G:

end if:

for i from 2 to nops(X) do G:=AddPtBinSs(G,G,K,m); if op(i,X)=1 then H:=AddPtBinSs(H,G,K,m): end if: end do: return(H); end proc: Contoh: R:=MulPtBinSs(P,5,K,m): T:=MulPtBinSs(R,6,K,m); S:=MulPtBinSs(P,6,K,m): S:=MulPtBinSs(S,5,K,m); 2. Non-Supersingular MulPtBinNs:=proc(P::list,k::integer,K::list,m::posint) local H,G,X::list, i::integer:

X:=convert(k,base,2); G:=P: H:=[{},{}]: if op(1,X)=1 then H:=G:

end if:

for i from 2 to nops(X) do G:=AddPtBinNs(G,G,K,m); if op(i,X)=1 then H:=AddPtBinNs(H,G,K,m): end if: end do: return(H); end proc: Contoh: R:=MulPtBinNs(P,5,K,m): T:=MulPtBinNs(R,6,K,m); S:=MulPtBinNs(P,6,K,m): S:=MulPtBinNs(S,5,K,m);

(10)

3. ElGamal

a. Prosedur Yang Digunakan Secara Rutin (mencari , , dan a) p := nextprime(rand(1..10^40)());

p := 9574006709478958762709029785327385064807;

alpha := 5;

a := rand(10..p-10)() mod p;

a := 665638090635425982769337333168305062441; beta := Power(alpha,a) mod p;

b. Kunci Publik dan Kunci Privat

KunciPublik := [p,alpha,beta]; KunciPribadi := a; c. Enkripsi Pesan := 91819250104; k := rand(10..p-10)(); k := 1026468764312794860407049035579406321411; gama := Power(alpha,k) mod p;

Topeng := (Power(beta,k) mod p); delta := Topeng*(Pesan) mod p;

Kirim := [gama,delta];

d. Dekripsi

Topeng := Power(Kirim[1],a) mod p; BukaTopeng := 1/Topeng mod p;

PesanDiTerima := Kirim[2]*BukaTopeng mod p;

PesanDiTerima := Kirim[2]*(Power(1/Kirim[1],a) mod p) mod p;

(11)

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 with(RandomTools): 1. Supersingular Privat:=Generate(integer(range=1..99)); m:=10; K:=ECAcakABCSs(m); alpha:=AcakPtSs(K,m); beta:=MulPtBinSs(alpha,Privat,K,m); Publik:=[alpha,beta]; 2. Non-Supersingular Privat:=Generate(integer(range=1..99)); m:=10; K:=ECAcakABNs(m); alpha:=AcakPtNs(K,m); beta:=MulPtBinNs(alpha,Privat,K,m); Publik:=[alpha,beta]; c. Enkripsi 1. Supersingular Pesan:=AcakPtSs(K,m); k:=Generate(integer(range=1..99)); Publik; gama:=MulPtBinSs(Publik[1],k,K,m); N:=MulPtBinSs(Publik[2],k,K,m); delta:=AddPtBinSs(Pesan,N,K,m); kirim:=[gama,delta]; 2. Non-Supersingular Pesan:=AcakPtNs(K,m); k:=Generate(integer(range=1..99));

(12)

Publik; gama:=MulPtBinNs(Publik[1],k,K,m); N:=MulPtBinNs(Publik[2],k,K,m); delta:=AddPtBinNs(Pesan,N,K,m); kirim:=[gama,delta]; d. Dekripsi 1. Supersingular kirim; w:=MulPtBinSs(kirim[1],Privat,K,m); w:=NegPtSs(w,K,m); Terima:=AddPtBinSs(kirim[2],w,K,m);

convert(Pesan=Terima,'truefalse'); # digunakan untuk

memastikan apakah Pesan sebelum dienkripsi sama dengan Pesan setelah didekripsikan.

2. Non-Supersingular kirim;

w:=MulPtBinNs(kirim[1],Privat,K,m); w:=NegPtNs(w,K,m);

Terima:=AddPtBinNs(kirim[2],w,K,m);

convert(Pesan=Terima,'truefalse'); # digunakan untuk

memastikan apakah Pesan sebelum dienkripsi sama dengan Pesan setelah didekripsikan.

Referensi

Dokumen terkait

ƒ Oleh karena itu perlu dilakukan masa adaptasi dengan diet tanpa vitamin larut lemak untuk menguras vitamin yang tersimpan dalam hati sehingga pada saat analisa sumber vitamin

Pelaksanaan program kerja Laboratorium IPA di SMAN 1 KOTA BIMA ini diharapkan menjadi solusi dalam menyiasati besarnya tanggung jawab yang diemban oleh mata pelajaran BIOLOGI,

Skripsi yang berjudul ”Perancangan Mesin Micro Stone Crusher Dengan Pendekatan Ergonomi Untuk Menangani Limbah Batu Menuju Industri Batu Berkelanjutan” ini

(Eka, 2009) menyatakan bahwa salah satu yang paling menonjol adalah upacara perkawinan dimana terdapat bermacam- macam atau keberagaman dalam pelaksanaan upacara dan

Selanjutnya setelah proses pembuatan batik tulis selesai dilakukan, warga dim inta untuk mengeluarkan kreativitas ide mereka pada proses yang kedua yaitu membuat tekstil

Penggunaan laptop yang tidak tepat akan membuat laptop mudah menjadi panas. Terlebih ketika laptop bekerja terlalu keras maka akan menyebabkan panas berlebih yang

Si Siput put tel telanj anjang ang mam mampu pu unt untuk uk men menyi yimpa mpan n man mani i yan yang g mer mereka eka pun punyai yai unt untuk  uk    banyak

i Puji syukur kita panjatkan kehadirat Tuhan Yang Maha Esa, karena atas Karunia dan Rahmat-Nya Prosiding Seminar Nasional Kimia dan Pendidikan Kimia 2016, yang