• Tidak ada hasil yang ditemukan

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

N/A
N/A
Protected

Academic year: 2017

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

Copied!
15
0
0

Teks penuh

(1)

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');

(2)

function tombolKeluar_Callback(hObject, eventdata, handles)

(3)

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)

(4)

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

(5)

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);

(6)

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

(7)

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;

(8)

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

(9)

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];

(10)

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)

(11)

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)

(12)

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);

(13)

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;

(14)

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)

(15)

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;

Referensi

Dokumen terkait

Pada penelitian ini, algoritma RSA dan ElGamal dikombinasikan untuk dapat mengamankan data pada file dokumen yang bertujuan agar dapat memberikan perlindungan

function TimeEOF_CreateFcn(hObject, eventdata, handles) if ispc &amp;&amp; isequal(get(hObject,'BackgroundColor'),

function varargout = pengujian_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output;. function beranda_Callback(hObject, eventdata, handles)

Pada penelitian ini, algoritma RSA dan ElGamal dikombinasikan untuk dapat mengamankan data pada file dokumen yang bertujuan agar dapat memberikan perlindungan

function Cover_OpeningFcn(hObject, eventdata, handles, varargin).. handles.Axes1 = imshow('logo.jpg'); handles.output

function filter_Callback(hObject, eventdata, handles) function menuAbout_Callback(hObject, eventdata, handles)

function Untitled_8_Callback(hObject, eventdata, handles) close utama;. function figure1_CreateFcn(hObject,

function filename_Callback(hObject, eventdata, handles) function filename_CreateFcn(hObject, eventdata, handles) if ispc &amp;&amp; isequal(get(hObject,'BackgroundColor'),