Lampiran 1. Fungsi Utama
function varargout = UTAMA(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', 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');
function tombolKeluar_Callback(hObject, eventdata, handles)
Lampiran 2. Fungsi Enkripsi
function varargout = ENKRIPSI(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', 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)
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
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);
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 <= pjg_pesan);
pesan = ASCII_pesan(o_RSA);
biner_eRSA = dec2bin(e_RSA);
pjg_binerERSA = length(biner_eRSA);
c_RSA = 1;
if(e_RSA == 0)
c_RSA = 1;
else
c1_RSA = pesan;
if(biner_eRSA(pjg_binerERSA) == '1')
c_RSA = pesan;
end
c1_RSA = mod(c1_RSA*c1_RSA,n_RSA);
if(biner_eRSA(i) == '1')
c_RSA = mod(c_RSA*c1_RSA,n_RSA);
end
end
end
cip_RSA(o_RSA) = c_RSA;
o_RSA = o_RSA + 1;
end
cipher_RSA = cip_RSA(1:pjg_pesan);
cipherRSA_Besar = max (cipher_RSA);
acak = randint (100,1,[cipherRSA_Besar 10000]);
for i = 1:100
bil = acak(i);
cek = isprime(bil);
if cek == 1
break;
end
end
p_El = bil;
set (handles.nilaiPEL1,'string',p_El);
g_El = randint (1,1,[1 p_El-1]);
set(handles.nilaiGEL,'string',g_El)
x_El = randint (1,1,[1 p_El-2]);
set(handles.nilaiXEL,'string',x_El)
biner_xEl = dec2bin(x_El);
pjg_binerXEl = length(biner_xEl);
y_El = 1;
y_El = 1;
else
y1_El = g_El;
if (biner_xEl(pjg_binerXEl) == '1')
y_El = g_El;
end
for i=pjg_binerXEl-1:-1:1
y1_El = mod(y1_El*y1_El, p_El);
if(biner_xEl(i) == '1')
y_El = mod(y_El*y1_El, p_El);
end
end
end
set(handles.nilaiYEL,'string',y_El);
set(handles.nilaiPEL2,'string',p_El);
o_El = 1;
while (o_El <= pjg_pesan)
k_El = randint (1,1,[1 p_El-2]);
biner_kEl = dec2bin(k_El);
pjg_binerKel = length(biner_kEl);
cA_El = 1;
if (k_El == 0)
cA_El = 1;
else
cA1_El = g_El;
if(biner_kEl(pjg_binerKel) == '1')
cA_El = g_El;
end
for i=pjg_binerKel-1:-1:1
if(biner_kEl(i) == '1')
cA_El = mod(cA_El*cA1_El, p_El);
end
end
end
cipA_El(o_El) = cA_El;
cB_El = 1;
if (k_El == 0)
cB_El = 1;
else
cB1_El = y_El;
if(biner_kEl(pjg_binerKel) == '1')
cB_El = y_El;
end
for i=pjg_binerKel-1:-1:1
cB1_El = mod(cB1_El*cB1_El, p_El);
if(biner_kEl(i) == '1')
cB_El = mod(cB_El*cB1_El, p_El);
end
end
end
cipB1_El = mod(cipher_RSA(o_El),p_El);
cipB_El(o_El) = mod(cB_El*cipB1_El, p_El);
o_El = o_El + 1;
end
fprintf('\n');
cipA_El = cipA_El(1:pjg_pesan);
cipB_El = cipB_El(1:pjg_pesan);
cip_El = [cipA_El; cipB_El];
cipher_El = reshape(cip_El,1,pjg_cipEl);
handles.cipherteks = cipher_El;
guidata(hObject, handles)
function prosesEnkripsi_Callback(hObject, eventdata, handles)
cipher_El = handles.cipherteks;
set(handles.kolomCipherteks,'string',cipher_El);
function nilaiNRSA1_CreateFcn(hObject, eventdata, handles)
function kunciPublikRSA_CreateFcn(hObject, eventdata, handles)
function nilaiNRSA2_CreateFcn(hObject, eventdata, handles)
function kunciPrivatRSA_CreateFcn(hObject, eventdata, handles)
function nilaiPEL1_CreateFcn(hObject, eventdata, handles)
function nilaiGEL_CreateFcn(hObject, eventdata, handles)
function nilaiXEL_CreateFcn(hObject, eventdata, handles)
function nilaiYEL_CreateFcn(hObject, eventdata, handles)
function nilaiPEL2_CreateFcn(hObject, eventdata, handles)
function kolomCipherteks_Callback(hObject, eventdata, handles)
function simpanFile_Callback(hObject, eventdata, handles)
cipher_El = handles.cipherteks;
[filename, pathname] = uiputfile ({'*.txt'},'Simpan File');
if pathname == 0
return;
end
name = fullfile(pathname, filename);
dlmwrite(name, cipher_El,'delimiter','\n','newline','pc');
guidata(hObject, handles);
function keluar_Callback(hObject, eventdata, handles)
Lampiran 3. Fungsi Dekripsi
function varargout = DEKRIPSI(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @DEKRIPSI_OpeningFcn, ...
'gui_OutputFcn', @DEKRIPSI_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 DEKRIPSI_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
function varargout = DEKRIPSI_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)
return;
else
cipher = fileread (fullpathname);
set(handles.kolomCipherteks, 'String', cipher)
handles.cipherteks = cipher;
guidata(hObject, handles)
end
function kolomCipherteks_CreateFcn(hObject, eventdata, handles)
function prosesDekripsi_Callback(hObject, eventdata, handles)
x_El = get(handles.inputXEL,'string');
x_El = str2num(x_El);
p_El = get(handles.inputPEL,'string');
p_El = str2num(p_El);
d_RSA = get(handles.inputDRSA,'string');
d_RSA = str2num(d_RSA);
n_RSA = get(handles.inputNRSA,'string');
n_RSA = str2num(n_RSA);
cipher = handles.cipherteks;
cipher = str2num(cipher);
pjg_cipher = length(cipher);
A_El = cipher(1:2:pjg_cipher);
B_El = cipher(2:2:pjg_cipher);
overDes = pjg_cipher/2;
o_El = 1;
pangkat = p_El - 1 - x_El;
while (o_El <= overDes)
cipA_El = A_El(o_El);
cipB_El = B_El(o_El);
pjg_binerPangkat = length(biner_pangkat);
psn_El = 1;
if (x_El == 0)
psn_El = 1;
else
psn1_El = cipA_El;
if(biner_pangkat(pjg_binerPangkat) == '1')
psn_El = cipA_El;
end
for i=pjg_binerPangkat-1:-1:1
psn1_El = mod(psn1_El*psn1_El,p_El);
if(biner_pangkat(i) == '1')
psn_El = mod(psn_El*psn1_El, p_El);
end
end
end
psnA_El = mod(cipB_El, p_El);
cipher_El(o_El) = mod(psn_El*psnA_El,p_El);
o_El=o_El+1;
end
RSA = cipher_El(1:overDes);
o_RSA = 1;
while (o_RSA <= overDes)
c = RSA(o_RSA);
biner_dRSA = dec2bin (d_RSA);
lbin1 = length (biner_dRSA);
psn_RSA = 1;
if (d_RSA == 0)
psn_RSA = 1;
psn1_RSA = c;
if(biner_dRSA(lbin1) == '1')
psn_RSA = c;
end
for i = lbin1-1:-1:1
psn1_RSA = mod(psn1_RSA*psn1_RSA,n_RSA);
if(biner_dRSA(i) == '1')
psn_RSA = mod(psn_RSA*psn1_RSA, n_RSA);
end
end
end
pesan(o_RSA) = psn_RSA;
o_RSA = o_RSA + 1;
end
pesan = pesan(1:overDes);
pesan = char(pesan);
handles.pesan = pesan;
guidata(hObject, handles)
set(handles.kolomPlainteks,'string',pesan)
function kolomPlainteks_CreateFcn(hObject, eventdata, handles)
function inputDRSA_Callback(hObject, eventdata, handles)
function inputDRSA_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function inputNRSA_Callback(hObject, eventdata, handles)
function inputNRSA_CreateFcn(hObject, eventdata, handles)
set(hObject,'BackgroundColor','white');
end
function inputXEL_Callback(hObject, eventdata, handles)
function inputXEL_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function inputPEL_Callback(hObject, eventdata, handles)
function inputPEL_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function simpanFile_Callback(hObject, eventdata, handles)
pesan = handles.pesan;
[filename, pathname] = uiputfile ({'*.txt'},'Simpan File');
if pathname == 0
return;
end
name = fullfile(pathname, filename);
dlmwrite(name, pesan,'delimiter','\n','newline','pc');
guidata(hObject, handles);
function keluar_Callback(hObject, eventdata, handles)
close;