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);
k13=str2double(get(handles.k13,'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); %menambahkan spasi agar jumlah array habis dibagi 4
handles.kata
if mod(handles.l,4)~=0
while mod(handles.l,4)~=0
for i=1:i<=(handles.ltemp-length(handles.kata))
%membuat matriks baru dengan ukuran 4xn, n=jumlah kolom (panjang kalimat/4)
handles.word=abs(handles.kata); 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);
%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
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);
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);
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);
k13=str2double(get(handles.k13,'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];
h=waitbar(0,'Harap Tunggu...'); while posdata<=length(data)/4 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)
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
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);