64
65
Lampiran 1.
Tabel Kode (0-93)
No Kode No Kode No Kode No Kode
0 a 24 y 48 M 72 ) 1 b 25 z 49 N 73 _ 2 c 26 1 50 O 74 + 3 d 27 2 51 P 75 ` 4 e 28 3 52 Q 76 = 5 f 29 4 53 R 77 - 6 g 30 5 54 S 78 { 7 h 31 6 55 T 79 } 8 i 32 7 56 U 80 | 9 j 33 8 57 V 81 [ 10 k 34 9 58 W 82 ] 11 l 35 0 59 X 83 \ 12 m 36 A 60 Y 84 : 13 n 37 B 61 Z 85 " 14 o 38 C 62 ~ 86 ; 15 p 39 D 63 ! 87 < 16 q 40 E 64 @ 88 > 17 r 41 F 65 # 89 ? 18 s 42 G 66 $ 90 , 19 t 43 H 67 % 91 . 20 u 44 I 68 ^ 92
/
21 v 45 J 69 & 93 <space> 22 w 46 K 70 * 94‘
23 x 47 L 71 (66
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;
67 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
68 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
69 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= ');
70 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
71 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
72 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
73 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;
74 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
75 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
76 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
77 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
78 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
79 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)
80
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)