LAMPIRAN
64
Lampiran 1. Tabel Kode (0-93) No 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
Kode a b c d e f g h i j k l m n o p q r s t u v w x
No 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
Kode y z 1 2 3 4 5 6 7 8 9 0 A B C D E F G H I J K L
No 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
Kode M N O P Q R S T U V W X Y Z ~ ! @ # $ % ^ & * (
No 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
Kode ) _ + ` = { } | [ ] \ : " ; < > ? , .
/ <space>
‘
65
Lampiran 2. Program untuk Proses Menentukan Pembangkit Kunci. Pihak 1 function pembentukan1 format long g disp('masukkan nilai n untuk menentukan ukuran matriks n x n'); n=input('n= '); disp('masukkan nilai matriks yang determinannya tidak sama dengan 0'); disp('11 A sampai nn A untuk membentuk matriks A dan seterusnya'); for i=1:n i=i for j=1:n j=j X(i,j)=input('A(i,j)='); j=1+j; end i=1+i; end dx=det(X); while dx == 0 disp('detererminan A = 0'); disp('ulangi menginputkan matriks'); for i=1:n i=i for j=1:n j=j X(i,j)=input('A(i,j)='); j=1+j; end i=1+i; end dx=det(X); end for i=1:n i=i for j=1:n j=j Y(i,j)=input( 'B(i,j)='); j=1+j; end i=1+i;
66
end dy=det(Y); while dy == 0 disp('detererminan B = 0'); disp('ulangi menginputkan matriks'); for i=1:n i=i for j=1:n j=j Y(i,j)=input( 'B(i,j)='); j=1+j; end i=1+i; end dy=det(Y); end for i=1:n i=i for j=1:n j=j C(i,j)=input( 'C(i,j)='); j=1+j; end i=1+i; end dc=det(C); while dc == 0 disp('detererminan C = 0'); disp('ulangi menginputkan matriks'); for i=1:n i=i for j=1:n j=j C(i,j)=input( 'C(i,j)='); j=1+j; end i=1+i; end dc=det(C); end for i=1:n i=i for j=1:n j=j
67
D(i,j)=input( 'D(i,j)='); j=1+j; end i=1+i; end dd=det(D); while dd == 0 disp('detererminan D = 0'); disp('ulangi menginputkan matriks'); for i=1:n i=i for j=1:n j=j D(i,j)=input( 'D(i,j)='); j=1+j; end i=1+i; end dd=det(D); end disp('masukan sebarang bilangan asli p,q,k dan l'); p=input('p= '); q=input('q= '); k=input('k= '); l=input('l= '); Xm=X^p; Ym=Y^q; Cm=C^k; Dm=D^l; U=Xm*Ym W=Cm*Dm disp('kirim U dan W ke pihak 2'); disp('masukkan V dan Z dari pihak 2'); disp('masukkan nilai matriks'); for i=1:n i=i for j=1:n j=j V(i,j)=input('V(i,j)='); j=1+j; end i=1+i; end for i=1:n
68
i=i for j=1:n j=j Z(i,j)=input( 'Z(i,j)='); j=1+j; end i=1+i; end K=Xm*V*Ym L=Cm*Z*Dm for i=1:n for j=1:n K(i,j)=K(i,j)*(10^-(((n*(i-1))*2)+((2*j)-1))); j=1+j; end i=1+i; end for i=1:n for j=1:n L(i,j)=L(i,j)*(10^-(((n*(i-1))*2)+((2*j)-1))); j=1+j; end i=1+i; end KK=sum(sum(K)); LL=sum(sum(L)); disp('nilai awal x = ') while KK > 1 KK=KK*(10^-1); end disp(KK) disp('nilai awal y = ') while LL > 1 LL=LL*(10^-1); end disp(LL)
Pihak 2 function pembentukan2 format long g disp('masukkan nilai n untuk menentukan ukuran matriks n x n'); n=input('n= ');
69
disp('masukkan nilai matriks yang determinannya tidak sama dengan 0'); disp('11 A sampai nn A untuk membentuk matriks A dan seterusnya'); for i=1:n i=i for j=1:n j=j X(i,j)=input('A(i,j)='); j=1+j; end i=1+i; end dx=det(X); while dx == 0 disp('detererminan A = 0'); disp('ulangi menginputkan matriks'); for i=1:n i=i for j=1:n j=j X(i,j)=input('A(i,j)='); j=1+j; end i=1+i; end dx=det(X); end for i=1:n i=i for j=1:n j=j Y(i,j)=input( 'B(i,j)='); j=1+j; end i=1+i; end dy=det(Y); while dy == 0 disp('detererminan B = 0'); disp('ulangi menginputkan matriks'); for i=1:n i=i for j=1:n j=j Y(i,j)=input( 'B(i,j)=');
70
j=1+j; end i=1+i; end dy=det(Y); end for i=1:n i=i for j=1:n j=j C(i,j)=input( 'C(i,j)='); j=1+j; end i=1+i; end dc=det(C); while dc == 0 disp('detererminan C = 0'); disp('ulangi menginputkan matriks'); for i=1:n i=i for j=1:n j=j C(i,j)=input( 'C(i,j)='); j=1+j; end i=1+i; end dc=det(C); end for i=1:n i=i for j=1:n j=j D(i,j)=input( 'D(i,j)='); j=1+j; end i=1+i; end dd=det(D); while dd == 0 disp('detererminan D = 0'); disp('ulangi menginputkan matriks'); for i=1:n
71
i=i for j=1:n j=j D(i,j)=input( 'D(i,j)='); j=1+j; end i=1+i; end dd=det(D); end disp('masukan sebarang bilangan asli p,q,k dan l'); p=input('r= '); q=input('s= '); k=input('i= '); l=input('j= '); Xm=X^p; Ym=Y^q; Cm=C^k; Dm=D^l; V=Xm*Ym Z=Cm*Dm disp('kirim V dan Z ke pihak 2'); disp('masukkan U dan W dari pihak 2'); disp('masukkan nilai matriks'); for i=1:n i=i for j=1:n j=j U(i,j)=input('U(i,j)='); j=1+j; end i=1+i; end for i=1:n i=i for j=1:n j=j W(i,j)=input( 'W(i,j)='); j=1+j; end i=1+i; end K=Xm*U*Ym L=Cm*W*Dm
72
for i=1:n for j=1:n K(i,j)=K(i,j)*(10^-(((n*(i-1))*2)+((2*j)-1))); j=1+j; end i=1+i; end for i=1:n for j=1:n L(i,j)=L(i,j)*(10^-(((n*(i-1))*2)+((2*j)-1))); j=1+j; end i=1+i; end KK=sum(sum(K)); LL=sum(sum(L)); disp('nilai awal x = ') while KK > 1 KK=KK*(10^-1); end disp(KK) disp('nilai awal y = ') while LL > 1 LL=LL*(10^-1); end disp(LL)
Lampiran 3. Program untuk Proses Mengkonversi Pesan. function [angka] = konversipesan(huruf) angka = []; for i=1:size(huruf,2) angka(i) = ubah(huruf(i)); end function [angka] = ubah(huruf) if strcmp(huruf,'a')==1 angka=0; elseif strcmp(huruf,'b')==1 angka=1; elseif strcmp(huruf,'c')==1
73
angka=2; elseif strcmp(huruf,'d')==1 angka=3; elseif strcmp(huruf,'e')==1 angka=4; elseif strcmp(huruf,'f')==1 angka=5; elseif strcmp(huruf,'g')==1 angka=6; elseif strcmp(huruf,'h')==1 angka=7; elseif strcmp(huruf,'i')==1 angka=8; elseif strcmp(huruf,'j')==1 angka=9; elseif strcmp(huruf,'k')==1 angka=10; elseif strcmp(huruf,'l')==1 angka=11; elseif strcmp(huruf,'m')==1 angka=12; elseif strcmp(huruf,'n')==1 angka=13; elseif strcmp(huruf,'o')==1 angka=14; elseif strcmp(huruf,'p')==1 angka=15; elseif strcmp(huruf,'q')==1 angka=16; elseif strcmp(huruf,'r')==1 angka=17; elseif strcmp(huruf,'s')==1 angka=18; elseif strcmp(huruf,'t')==1 angka=19; elseif strcmp(huruf,'u')==1 angka=20; elseif strcmp(huruf,'v')==1 angka=21; elseif strcmp(huruf,'w')==1 angka=22; elseif strcmp(huruf,'x')==1 angka=23; elseif strcmp(huruf,'y')==1
74
angka=24; elseif strcmp(huruf,'z')==1 angka=25; elseif strcmp(huruf,'1')==1 angka=26; elseif strcmp(huruf,'2')==1 angka=27; elseif strcmp(huruf,'3')==1 angka=28; elseif strcmp(huruf,'4')==1 angka=29; elseif strcmp(huruf,'5')==1 angka=30; elseif strcmp(huruf,'6')==1 angka=31; elseif strcmp(huruf,'7')==1 angka=32; elseif strcmp(huruf,'8')==1 angka=33; elseif strcmp(huruf,'9')==1 angka=34; elseif strcmp(huruf,'0')==1 angka=35; elseif strcmp(huruf,'A')==1 angka=36; elseif strcmp(huruf,'B')==1 angka=37; elseif strcmp(huruf,'C')==1 angka=38; elseif strcmp(huruf,'D')==1 angka=39; elseif strcmp(huruf,'E')==1 angka=40; elseif strcmp(huruf,'F')==1 angka=41; elseif strcmp(huruf,'G')==1 angka=42; elseif strcmp(huruf,'H')==1 angka=43; elseif strcmp(huruf,'I')==1 angka=44; elseif strcmp(huruf,'J')==1 angka=45; elseif strcmp(huruf,'K')==1
75
angka=46; elseif strcmp(huruf,'L')==1 angka=47; elseif strcmp(huruf,'M')==1 angka=48; elseif strcmp(huruf,'N')==1 angka=49; elseif strcmp(huruf,'O')==1 angka=50; elseif strcmp(huruf,'P')==1 angka=51; elseif strcmp(huruf,'Q')==1 angka=52; elseif strcmp(huruf,'R')==1 angka=53; elseif strcmp(huruf,'S')==1 angka=54; elseif strcmp(huruf,'T')==1 angka=55; elseif strcmp(huruf,'U')==1 angka=56; elseif strcmp(huruf,'V')==1 angka=57; elseif strcmp(huruf,'W')==1 angka=58; elseif strcmp(huruf,'X')==1 angka=59; elseif strcmp(huruf,'Y')==1 angka=60; elseif strcmp(huruf,'Z')==1 angka=61; elseif strcmp(huruf,'~')==1 angka=62; elseif strcmp(huruf,'!')==1 angka=63; elseif strcmp(huruf,'@')==1 angka=64; elseif strcmp(huruf,'#')==1 angka=65; elseif strcmp(huruf,'$')==1 angka=66; elseif strcmp(huruf,'%')==1 angka=67; elseif strcmp(huruf,'^')==1
76
angka=68; elseif strcmp(huruf,'&')==1 angka=69; elseif strcmp(huruf,'*')==1 angka=70; elseif strcmp(huruf,'(')==1 angka=71; elseif strcmp(huruf,')')==1 angka=72; elseif strcmp(huruf,'_')==1 angka=73; elseif strcmp(huruf,'+')==1 angka=74; elseif strcmp(huruf,'`')==1 angka=75; elseif strcmp(huruf,'-')==1 angka=76; elseif strcmp(huruf,'=')==1 angka=77; elseif strcmp(huruf,'{')==1 angka=78; elseif strcmp(huruf,'}')==1 angka=79; elseif strcmp(huruf,'|')==1 angka=80; elseif strcmp(huruf,'[')==1 angka=81; elseif strcmp(huruf,']')==1 angka=82; elseif strcmp(huruf,'\')==1 angka=83; elseif strcmp(huruf,':')==1 angka=84; elseif strcmp(huruf,'"')==1 angka=85; elseif strcmp(huruf,';')==1 angka=86; elseif strcmp(huruf,'<')==1 angka=87; elseif strcmp(huruf,'>')==1 angka=88; elseif strcmp(huruf,'?')==1 angka=89; elseif strcmp(huruf,',')==1
77
angka=90; elseif strcmp(huruf,'.')==1 angka=91; elseif strcmp(huruf,'/')==1 angka=92; elseif strcmp(huruf,' ')==1 angka=93; end Lampiran 4. Program untuk Proses Pembangkitan Kunci.
function [angka1] = pembangkit1(huruf1) angka1 = []; for i=1:size(huruf1,2) if i==1 angka1(i) = input('x='); else angka1(i) = hitung3(angka1(i-1)); end end function [angka2] = pembangkit2(huruf2) angka2 = []; for i=1:size(huruf2,2) if i==1 angka2(i) = input('y='); else angka2(i) = hitung5(angka2(i-1),huruf2(i-1)); end end function [angka1] = hitung3(huruf1) if huruf1 <= 0.5 angka1=(2*huruf1); else angka1=((2*huruf1)-1); end
function [angka1] = hitung5(huruf2,ada1) if ada1 <= 0.5
78
angka1=(huruf2/2); else angka1=((huruf2+1)/2); end
Lampiran 5. Program untuk Proses Enkripsi.
function enkripsi format long g m=input('tulis pesan= ','s'); disp('masukkan x & y maksimal 12 digit dibelakang koma tanpa pembulatan'); n=length(m); p=ones(1,ceil(n/2)); o=konversipesan(m); c=pembangkit1(p); d=pembangkit2(c); cc=floor(c*100); dd=floor(d*100); for i=1:n if mod(i,2)==0 C='abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ~!@#$%^& *()_+`-={}|[]\:";<>?,./ '; z=mod(o(i)+dd(ceil(i/2)),94)+1; mat=C(z); a(i)=mat(1); else C='abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ~!@#$%^& *()_+`-={}|[]\:";<>?,./ '; z=mod(o(i)+cc(ceil(i/2)),94)+1; mat=C(z); a(i)=mat(1); end end disp('Maka Chipertextnya adalah') disp(a)
79
Lampiran 6. Program untuk Proses Dekripsi. function dekripsi format long g m=input('tulis pesan= ','s'); disp('masukkan x & y maksimal 12 digit dibelakang koma tanpa pembulatan'); n=length(m); p=ones(1,ceil(n/2)); o=konversipesan(m); c=pembangkit1(p); d=pembangkit2(c); cc=floor(c*100); dd=floor(d*100); for i=1:n if mod(i,2)==0 C='abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ~!@#$%^& *()_+`-={}|[]\:";<>?,./ '; z=mod(o(i)-dd(ceil(i/2)),94)+1; mat=C(z); a(i)=mat(1); else C='abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ~!@#$%^& *()_+`-={}|[]\:";<>?,./ '; z=mod(o(i)-cc(ceil(i/2)),94)+1; mat=C(z); a(i)=mat(1); end end disp('Maka Plaintextnya adalah') disp(a)
80