LISTING PROGRAM
function varargout = beranda(varargin)
Kode Program Tampilan Home
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @beranda_OpeningFcn, ... 'gui_OutputFcn', @beranda_OutputFcn, ... 'gui_LayoutFcn', [] , ...
'gui_Callback', []); if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1}); end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else
gui_mainfcn(gui_State, varargin{:}); end
function beranda_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject;
guidata(hObject, handles);
function varargout = beranda_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output;
function Beranda_Callback(hObject, eventdata, handles) function Untitled_2_Callback(hObject, eventdata, handles) function Help_Callback(hObject, eventdata, handles)
help
function Exit_Callback(hObject, eventdata, handles) close all
function Enkripsi_Callback(hObject, eventdata, handles) hill
function Dekripsi_Callback(hObject, eventdata, handles) extract
function latar_CreateFcn(hObject, eventdata, handles) FKripto=guidata(gcbo);
p=imshow('bgr.bmp');
set(FKripto.latar,'Userdata',p);
function latar_ButtonDownFcn(hObject, eventdata, handles) function About_Callback(hObject, eventdata, handles) about
function latar_DeleteFcn(hObject, eventdata, handles)
Kode Program Enkripsi dengan kunci 1
function enkrip1_Callback(hObject, eventdata, handles) % hObject handle to enkrip1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) FKripto=guidata(gcbo);
k11=str2double(get(handles.k11,'string')); k12=str2double(get(handles.k12,'string'));
k13=str2double(get(handles.k13,'string')); k14=str2double(get(handles.k14,'string')); k21=str2double(get(handles.k21,'string')); k22=str2double(get(handles.k22,'string')); k23=str2double(get(handles.k23,'string')); k24=str2double(get(handles.k24,'string')); k31=str2double(get(handles.k31,'string')); k32=str2double(get(handles.k32,'string')); k33=str2double(get(handles.k33,'string')); k34=str2double(get(handles.k34,'string')); k41=str2double(get(handles.k41,'string')); k42=str2double(get(handles.k42,'string')); k43=str2double(get(handles.k43,'string')); k44=str2double(get(handles.k44,'string')); kunci=[k11 k12 k13 k14;k21 k22 k23 k24;k31 k32 k33 k34;k41 k42 k43 k44]; dk=det(kunci); if dk==0
errordlg('Determinan matriks kunci 1 tidak boleh 0'); guidata(hObject,handles);
end
input=get(FKripto.listbox1,'Userdata'); if isequal(input,[])
errordlg({'Plaintext tidak ditemukan.','silahkan isi plaintext .'},'Error','modal'); guidata(hObject,handles); end tic; handles.kata=abs(input); guidata(hObject,handles); handles.l=length(handles.kata);
guidata(hObject,handles); %menambahkan spasi agar jumlah array habis dibagi 4 handles.kata if mod(handles.l,4)~=0 while mod(handles.l,4)~=0 handles.l=handles.l+1; guidata(hObject,handles); handles.ltemp=handles.l; guidata(hObject,handles); i=1; guidata(hObject,handles); for i=1:i<=(handles.ltemp-length(handles.kata)) end handles.kata=[handles.kata char(32)]; end end handles.kata;
%membuat matriks baru dengan ukuran 4xn, n=jumlah kolom (panjang kalimat/4)
handles.word=abs(handles.kata); guidata(hObject,handles);
handles.temp=zeros(4,length(handles.word)/4); guidata(hObject,handles);
handles.poskata=1; guidata(hObject,handles); for i=1:(length(handles.word)/4) for k=1:4 handles.temp(k,i)=handles.word(1,handles.poskata); guidata(hObject,handles); handles.poskata=handles.poskata+1; end end %disp(temp) %kata=kata handles.temp
%perkalian matriks dengan kunci pertama handles.m=handles.temp; guidata(hObject,handles); for i=1:length(handles.kata)/4 temp2=handles.m(:,i); sel=kunci*temp2; handles.m(:,i)=sel; guidata(hObject,handles); end handles.m
%mengubah kebentuk array 1 dimensi
handles.kos=zeros(1,length(handles.kata)); guidata(hObject,handles); handles.poskol=1; guidata(hObject,handles); h=waitbar(0,'Harap Tunggu...'); while handles.poskol<=length(handles.kata); for i=1:(length(handles.kata)/4) sem=handles.m(:,i);
handles.sem2= sem'; %sem' artinya transpose matriks sem guidata(hObject,handles); for k=1:4 handles.kos(1,handles.poskol)=handles.sem2(1,k); handles.poskol=handles.poskol+1; end end %kos handles.askos=(abs(num2str(handles.kos)))'; guidata(hObject,handles); handles.laskos=length(handles.askos); guidata(hObject,handles); s=handles.laskos+4; %cp=abs(plain); %k=str2Double(get(FKripto.ekunci1,'String')); %pt=abs(plain); set(FKripto.listbox2,'string',handles.askos); set(FKripto.listbox2,'Userdata',handles.askos); set(FKripto.r,'String',num2str(s)); wk=toc*1000; set(FKripto.wkten,'String',num2str(wk)); waitbar(handles.poskol/length(handles.kata)); end
close(h);
function enkripsi2_Callback(hObject, eventdata, handles)
Kode Program Enkripsi dengan kunci 2
% hObject handle to enkripsi2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) FKripto=guidata(gcbo); m11=str2double(get(handles.m11,'string')); m12=str2double(get(handles.m12,'string')); m13=str2double(get(handles.m13,'string')); m14=str2double(get(handles.m14,'string')); m21=str2double(get(handles.m21,'string')); m22=str2double(get(handles.m22,'string')); m23=str2double(get(handles.m23,'string')); m24=str2double(get(handles.m24,'string')); m31=str2double(get(handles.m31,'string')); m32=str2double(get(handles.m32,'string')); m33=str2double(get(handles.m33,'string')); m34=str2double(get(handles.m34,'string')); m41=str2double(get(handles.m41,'string')); m42=str2double(get(handles.m42,'string')); m43=str2double(get(handles.m43,'string')); m44=str2double(get(handles.m44,'string')); kunci2=[m11 m12 m13 m14;m21 m22 m23 m24;m31 m32 m33 m34;m41 m42 m43 m44]; dm=det(kunci2); if dm==0
errordlg('Determinan matriks kunci 2 tidak boleh 0'); guidata(hObject,handles);
end
cipher1=get(FKripto.listbox2,'Userdata'); if isequal(cipher1,[])
errordlg({'Belum ada ciphertext hasil enkripsi kunci 1.','silahkan lakukan enkripsi dengan kunci 1 .'},'Error','modal');
guidata(hObject,handles); end tic; handles.word=abs(handles.kata); guidata(hObject,handles); handles.temp=zeros(4,length(handles.word)/4); guidata(hObject,handles); handles.poskata=1; guidata(hObject,handles); for i=1:(length(handles.word)/4) for k=1:4 handles.temp(k,i)=handles.word(1,handles.poskata); guidata(hObject,handles); handles.poskata=handles.poskata+1; end end
%perkalian matriks dengan kunci kedua for i=1:length(handles.kata)/4
sel=kunci2*temp2; handles.m(:,i)=sel; guidata(hObject,handles); end handles.m
%mengubah kebentuk array 1 dimensi
handles.kos=zeros(1,length(handles.kata)); guidata(hObject,handles); handles.poskol=1; guidata(hObject,handles); h=waitbar(0,'Harap Tunggu...'); while handles.poskol<=length(handles.kata); for i=1:(length(handles.kata)/4) sem=handles.m(:,i);
handles.sem2= sem'; %sem' artinya transpose matriks sem guidata(hObject,handles); for k=1:4 handles.kos(1,handles.poskol)=handles.sem2(1,k); handles.poskol=handles.poskol+1; end end %kos handles.askos=(abs(num2str(handles.kos)))'; guidata(hObject,handles); handles.laskos=length(handles.askos); guidata(hObject,handles); s=handles.laskos+4; %cp=abs(plain); %k=str2Double(get(FKripto.ekunci1,'String')); %pt=abs(plain); set(FKripto.listbox3,'string',handles.askos); set(FKripto.listbox3,'Userdata',handles.askos); set(FKripto.r2,'String',num2str(s)); wk=toc*1000; set(FKripto.wkten2,'String',num2str(wk)); waitbar(handles.poskol/length(handles.kata)); end close(h); wkt1=str2double(get(FKripto.wkten,'string')); totalwktm=wkt1+wk; set(FKripto.totalwkt,'string',num2str(totalwktm)); set(FKripto.totalwkt,'Userdata',num2str(totalwktm));
Kode Program Dekripsi
function pushbutton6_Callback(hObject, eventdata, handles) FKripto=guidata(gcbo);
k11=str2double(get(handles.k11,'string')); k12=str2double(get(handles.k12,'string'));
k13=str2double(get(handles.k13,'string')); k14=str2double(get(handles.k14,'string')); k21=str2double(get(handles.k21,'string')); k22=str2double(get(handles.k22,'string')); k23=str2double(get(handles.k23,'string')); k24=str2double(get(handles.k24,'string')); k31=str2double(get(handles.k31,'string')); k32=str2double(get(handles.k32,'string')); k33=str2double(get(handles.k33,'string')); k34=str2double(get(handles.k34,'string')); k41=str2double(get(handles.k41,'string')); k42=str2double(get(handles.k42,'string')); k43=str2double(get(handles.k43,'string')); k44=str2double(get(handles.k44,'string')); m11=str2double(get(handles.m11,'string')); m12=str2double(get(handles.m12,'string')); m13=str2double(get(handles.m13,'string')); m14=str2double(get(handles.m14,'string')); m21=str2double(get(handles.m21,'string')); m22=str2double(get(handles.m22,'string')); m23=str2double(get(handles.m23,'string')); m24=str2double(get(handles.m24,'string')); m31=str2double(get(handles.m31,'string')); m32=str2double(get(handles.m32,'string')); m33=str2double(get(handles.m33,'string')); m34=str2double(get(handles.m34,'string')); m41=str2double(get(handles.m41,'string')); m42=str2double(get(handles.m42,'string')); m43=str2double(get(handles.m43,'string')); m44=str2double(get(handles.m44,'string')); kunci=[k11 k12 k13 k14;k21 k22 k23 k24;k31 k32 k33 k34;k41 k42 k43 k44]; kunci2=[m11 m12 m13 m14;m21 m22 m23 m24;m31 m32 m33 m34;m41 m42 m43 m44]; tic; data=get(handles.cpt,'Userdata') data=str2num(data) data=data' data=char(data) data=str2num(data) detemp=zeros(4,length(data)/4); posdata=1; h=waitbar(0,'Harap Tunggu...'); while posdata<=length(data)/4 for i=1:(length(data)/4) for k=1:4 detemp(k,i)=[data(1,posdata)]; posdata=posdata+1; end end waitbar(posdata/length(data)/4); end close(h); detemp
%perkalian matriks dengan invers kunci kedua for i=1:length(data)/4
detemp2=detemp(:,i); desel=inv(kunci2)*detemp2; detemp(:,i)=round(desel); end detemp
%perkalian matriks dengan invers kunci pertama for i=1:length(data)/4 detemp2=detemp(:,i); desel=inv(kunci)*detemp2; detemp(:,i)=round(desel); end detemp
%mengubah kebentuk array 1 dimensi kalimat=zeros(1,length(data)); poskol=1; h=waitbar(0,'Harap Tunggu...'); while poskol<=length(data)/4 for i=1:(length(data)/4) sem=detemp(:,i);
sem2= [sem']; %sem' artinya transpose matriks sem for k=1:4 kalimat(1,poskol)=sem2(1,k); poskol=poskol+1; end end waitbar(poskol/length(data)/4); end close(h); kalimat; handles.kalimat=char(kalimat); set(FKripto.plain,'string',handles.kalimat); set(FKripto.plain,'Userdata',handles.kalimat); wkt=toc*1000; set(FKripto.wktemb,'string',num2str(wkt));
Kode Program Embed
function embed_Callback(hObject, eventdata, handles) )
leb=str2num(get(handles.w,'string')) leg=str2num(get(handles.r,'string')) sisa=mod(leg,leb)
if(sisa==1||sisa==2)
errordlg({'Lebar gambar anda tidak memenuhi syarat untuk penanda akhir,','silahkan cari gambar lain .'},'Error','modal');
guidata(hObject,handles); else tic; FKripto=guidata(gcbo); a=handles.askos; a=a'; last=[double('basrah')] a=[14 a 35 35 35] s=length(a) aa=get(handles.w,'string'); aa=str2double(aa);
if(s<aa) lm=1; else lm=ceil(s/aa); end za=zeros(1,(lm*aa)-s); a=[a za] detemp=zeros(lm,aa,3); pos=1; for i=1:lm for k=1:aa detemp(i,k,1)=a(1,pos); detemp(i,k,2)=0; detemp(i,k,3)=0; pos=pos+1; end end pos; stego2=detemp stego2; citcover=[handles.data1]; stegolay1=[citcover]; handles.citstego=[stego2;stegolay1]; gbr=handles.citstego(:,:,1) axes(handles.axes2); guidata(hObject,handles); handles.open=imshow(handles.citstego); set(FKripto.axes2,'Userdata',handles.open); t=toc*1000; set(FKripto.wkt,'String',num2str(t)); end
Kode Program Ekstrak
function extract_Callback(hObject, eventdata, handles) FKripto=guidata(gcbo) tic; I=handles.data1(:,:,1); w=get(handles.w,'String'); w=str2double(w); h=get(handles.h,'String'); h=str2double(h); if (I(1,1)==14) for i=1:h for k=1:w if((I(i,k)==35&&I(i,k+1)==35&&I(i,k+2)==35)) bakhir=i kakhir=k break end end end tamp=zeros(1,bakhir*w);
posdata=1; h=waitbar(0,'Harap Tunggu...'); while posdata<=bakhir; for i=1:bakhir for k=1:w tamp(1,posdata)=I(i,k); posdata=posdata+1; end end waitbar(posdata/bakhir); end close(h); tamp for k=1:bakhir*w if(tamp(1,k)==35&&tamp(1,k+1)==35&&tamp(1,k+2)==35) behind=k break end end cptx =[tamp(1,2:behind-1)] cipher=cptx'; cipher=[(num2str(cipher))]; set(handles.cpt,'string',cipher); set(handles.cpt,'Userdata',cipher); wt=toc*1000; set(FKripto.wkteks,'string',num2str(wt)); else
errordlg('Citra tidak menyimpan pesan rahasia'); guidata(hObject,handles);