Implementasi Kombinasi Algoritma RSA dan ElGamal Dalam Pengamanan Data Pada File Dokumen

53

Lampiran 1. Fungsi Utama
function varargout = UTAMA(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name',
'gui_Singleton',

mfilename, ...
gui_Singleton, ...

'gui_OpeningFcn', @UTAMA_OpeningFcn, ...
'gui_OutputFcn',

@UTAMA_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 UTAMA_OpeningFcn(hObject, eventdata, handles,
varargin)
handles.output = hObject;
guidata(hObject, handles);
function varargout = UTAMA_OutputFcn(hObject, eventdata,
handles)
varargout{1} = handles.output;
function tombolEncoding_Callback(hObject, eventdata,

handles)
respon = ENKRIPSI('Title','formEnkripsi');
function tombolDecoding_Callback(hObject, eventdata,
handles)
respon = DEKRIPSI('Title','formDekripsi');

Universitas Sumatera Utara

54

function tombolKeluar_Callback(hObject, eventdata, handles)
close;

Universitas Sumatera Utara

55

Lampiran 2. Fungsi Enkripsi
function varargout = ENKRIPSI(varargin)
gui_Singleton = 1;

gui_State = struct('gui_Name',
'gui_Singleton',

mfilename, ...
gui_Singleton, ...

'gui_OpeningFcn', @ENKRIPSI_OpeningFcn,
...
'gui_OutputFcn',

@ENKRIPSI_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 ENKRIPSI_OpeningFcn(hObject, eventdata, handles,
varargin)
handles.output = hObject;
guidata(hObject, handles);
function varargout = ENKRIPSI_OutputFcn(hObject, eventdata,
handles)
varargout{1} = handles.output;
function pilihFile_Callback(hObject, eventdata, handles)
[filename pathname] = uigetfile ({'*.txt'},'Pilih File');

fullpathname = strcat (pathname, filename);
if isequal (filename,0)
respon = FileKosong('Title','formFileKosong');

Universitas Sumatera Utara

56

return;
else
pesan = fileread (fullpathname);
set(handles.kolomPlainteks, 'String', pesan)
handles.plainteks = pesan;
guidata(hObject, handles)
end
function kolomPlainteks_CreateFcn(hObject, eventdata,
handles)
function inputPRSA_Callback(hObject, eventdata, handles)
function inputPRSA_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function inputQRSA_Callback(hObject, eventdata, handles)
function inputQRSA_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function bangkitkanKunci_Callback(hObject, eventdata,
handles)
p_RSA = get(handles.inputPRSA,'string');
p_RSA = str2num(p_RSA);
q_RSA = get(handles.inputQRSA,'string');
q_RSA = str2num(q_RSA);
p_RSA = round(p_RSA);
prim = 1;
for i = 2 : floor(p_RSA/2)
if rem(p_RSA,i) == 0
prim = 0;


Universitas Sumatera Utara

57

break;
end
end
if prim == 0
respon = pTidakPrima('Title','formPTidakPrima');
return;
end
q_RSA = round(q_RSA);
prim = 1;
for i = 2 : floor(q_RSA/2)
if rem(q_RSA,i) == 0
prim = 0;
break;
end
end

if prim == 0
respon = qTidakPrima('Title','formQTidakPrima');
return;
end
if p_RSA == q_RSA
respon = pqSAMA('Title','formPQSama');
return;
end
n_RSA = p_RSA * q_RSA;
phi_RSA = (p_RSA - 1) * (q_RSA - 1);
val = 0;
cd = 0;
while(cd~=1||val==0)
n1 = randint(1,1,n_RSA);
e_RSA = randint(1,1,[2 n1]);

Universitas Sumatera Utara

58


val = isprime(e_RSA);
cd = gcd(e_RSA,phi_RSA);
end
set (handles.kunciPublikRSA,'string',e_RSA);
set (handles.nilaiNRSA1,'string',n_RSA);
val1 = 0;
d_RSA = 0;
while(val1~=1);
d_RSA = d_RSA + 1;
val1 = mod((d_RSA*e_RSA),phi_RSA);
end
set (handles.kunciPrivatRSA,'string',d_RSA);
set (handles.nilaiNRSA2,'string',n_RSA);
pesan = handles.plainteks;
ASCII_pesan = pesan - 0;
pjg_pesan = length (ASCII_pesan);
o_RSA = 1;
while (o_RSA