9
disertai kunci diubah menjadi bentuk biner. Kemudian bentuk biner tersebut di-XOR-kan, sehingga menghasilkan hasil enkripsi data pada
table gaji.
4. Hasil dan Pembahasan
Sistem dalam penelitian ini berbentuk desktop application yang disertai dengan GUI Graphical User Interface, bertujuan untuk mempermudah admin
dalam pengoperasian sistem. GUI pada sistem ini terdiri dari beberapa form antara lain adalah form Login, form Home, form Manage Data Pegawai, form
Manage Data Gaji, form Report Data Pegawai dan form Report Data Gaji. Berikut adalah pseudo code algoritma One Time Pad.
Kode Program 1 Pseudo Code Algoritma One Time Pad
Kode program 1 menjelaskan enkripsi one time pad dilakukan dengan cara XOR plaintext dan key. Baris ke empat, merupakan fungsi untuk menghitung
jumlah karakter plaintext, kemudian pada baris ke tujuh, akan membangun kunci menjadi sama panjang dengan plaintext. Baris ke delapan merupakan fungsi untuk
mengambil karakter kunci, kemudian di-XOR dengan karakter plaintext yang dipilih pada baris ke sembilan, dan akan ditambahkan ke hasil enkripsi.
Kode Program 2 Pseudo Code Algoritma Kode Geser
1. class
OTP {
2. public
static string
otp string
text, string
key{ 3.
var result =
new StringBuilder
; 4.
for int
c = 0; c text.Length; c++{ 5.
char character = text[c];
6. uint
charCode = uint
character; 7.
int keyPosition = c key.Length;
8. char
keyChar = key[keyPosition]; 9.
uint keyCode =
uint keyChar;
10. uint
combinedCode = charCode keyCode; 11.
char combinedChar =
char combinedCode;
12. result.AppendcombinedChar;}
13. return
result.ToString;} 14.
}
1. class
kodegeser {
2. public
static string
Encrypt string
plainText, int
key 3.
{ 4.
char [] plainChar = plainText.ToCharArray;
5. int
[] ascii = new
int [plainChar.Length];
6. for
int count=0;count plainChar.Length; count++{
7. ascii[count] =
Convert .ToInt32plainChar[count];
8. if
ascii[count] = 65 ascii[count] = 90{ 9.
ascii[count] = ascii[count] - 65 + key 26 + 65;}
10
Kode program 2 menjelaskan teknik substitusi kode geser dilakukan dengan cara mengeser plaintext menggunakan besaran key. Baris ke 4-5
merupakan fungsi untuk mengubah string plaintext ke bentuk char, kemudian pada baris ke 6-7 akan mengubah bentuk char plaintext ke bentuk ASCII. Baris ke
8-11 akan menyaring karakter ASCII yakni yang dipakai adalah karakter alfabet A-Z dan a-z saja dimana alfabet A-Z pada tabel ASCII adalah 65-90 dan a-z
adalah 97-122. Baris ke 12 akan mengubah hasil dalam bentuk ASCII ke bentuk Char, kemudian akan diubah lagi ke bentuk String pada baris 13.
Dalam sistem ini, penggunaan algoritma One Time Pad dan teknik subtitusi kode geser terdapat pada form Manage Data Gaji, dan juga form Report
Data Gaji. Form Manage Data Gaji terdapat beberapa textbox yang hanya dapat menampilkan data sesuai label pada textbox tersebut dan button yang harus
dieksekusi oleh Admin sesuai dengan label pada textbox dan button tersebut agar dapat melakukan perhitungan gaji pegawai, menyimpan data gaji pegawai dan
menghapus data gaji pegawai.
Gambar 9
Form Manage Data Gaji
Pada Gambar 9, data yang tersimpan adalah data yang sudah terenkripsi pada saat melakukan penyimpanan data. Form Manage Data Gaji juga terdapat
button Dekripsi untuk melihat data gaji asli dan button Enkripsi untuk mengembalikan data ke dalam bentuk enkripsi. Form Manage Data Gaji Terdapat
juga combobox dengan label NIP yang telah terisi dengan data NIP pegawai sesuai dengan data nip pada database pegawai, yang berfungsi untuk
menampilkan data pada textbox sesuai dengan data pemanggilan data pada database. Data gaji pegawai tidak dapat diubah, jadi data yang telah dihitung dan
terjadi kesalahan dalam perhitungan akan dihapus dan data pegawai harus di cek pada form Manage Data Pegawai. Button Proses untuk menghitung gaji pegawai,
button simpan untuk melakukan penyandian pada data yang dimasukan, kemudian
10. else
if ascii[count] = 97 ascii[count] = 122 {
11. ascii[count] = ascii[count] - 97 + key 26 + 97;}
12. plainChar[count] =
char ascii[count];}
13. return
new string
plainChar;} 14.
}
11
1. string
kunci = tbadmin.Text.Trim; 2.
g.setGaji_BulantextBox1.Text = OTP
.otptextBox1.Text, kodegeser
.Encryptkunci, Convert
.ToInt3223; 3.
g.setNipcbnip.Text; 4.
g.setGajiPokoktbgajipokok_HG.Text = OTP
.otptbgajipokok_HG.Text, kodegeser
.Encryptkunci, Convert
.ToInt3223; 5.
g.setTun_IStunistri.Text = OTP
.otptunistri.Text, kodegeser
.Encryptkunci, Convert
.ToInt3223; 6.
g.setTunAnaktunanak.Text = OTP
.otptunanak.Text, kodegeser
.Encryptkunci, Convert
.ToInt3223; 7.
g.setTunBerastunberas.Text = OTP
.otptunberas.Text, kodegeser
.Encryptkunci, Convert
.ToInt3223; 8.
g.setTun_Pajaktunpajak.Text = OTP
.otptunpajak.Text, kodegeser
.Encryptkunci, Convert
.ToInt3223; 9.
g.setPot_ipnpot_ipn.Text = OTP
.otppot_ipn.Text, kodegeser
.Encryptkunci, Convert
.ToInt3223; 10.
g.setPotPajakpotpajak.Text = OTP
.otppotpajak.Text, kodegeser
.Encryptkunci, Convert
.ToInt3223; 11.
g.setPotLaintbpotlain.Text = OTP
.otptbpotlain.Text, kodegeser
.Encryptkunci, Convert
.ToInt3223; 12.
g.setGaji_bersihtbgajibersih.Text = OTP
.otptbgajibersih.Text, kodegeser
.Encryptkunci, Convert
.ToInt3223;
menyimpannya kedalam database. Hasil enkripsi data gaji dapat dilihat pada Gambar 10.
Gambar 10 Hasil Enkripsi dan penyimpanan data gaji.
Pemanggilan fungsi untuk proses enkripsi dan penyimpanan data gaji pegawai ke dalam database, ditunjukkan pada Kode Program 1.
Kode Program 1 Proses Enkripsi Data Gaji
Pada Kode Program 1, baris 1-11 yang berfungsi sebagai perintah pada button simpan pada form Manage Data Gaji data gaji akan mengenkripsikan
Gaji_Bulan, Gaji_Pokok, Tun_Anak, Tun _Beras, Pot_Pajak, Pot_Lain, Gaji_Bersih dengan menggunakan encode pada class rumus dan kunci pada
textbox yang disubtitusikan pada class kodegeser yang telah disubtitusikan dengan menggunakan nilai kunci 23 dan kemudian menyimpan data tersebut dalam
database. Proses dekripsi data juga dapat dilakukan pada form Manage Data gaji pada Gambar 9. Hasil dekripsi data gaji dapat dilihat pada Gambar 11.
12
Gambar 11 Hasil Dekripsi
Pemanggilan fungsi untuk proses dekripsi data gaji, ditunjukkan pada Kode Program 2.
Kode Program 2 Fungsi Dekripsi
Kode Program 2 merupakan perintah untuk medekripsikan data yang telah terenkripsi dengan membuat list database yang sama dengan database dengan
menampilkan data yang telah terdekripsi. Baris 1-14 merupakan perintah untuk membuat list database. Baris 18-24 merupakan perintah untuk mendekripsikan
row pada database sesuai dengan list database menggunakan decode pada class
1. dgvgaji.DataSource =
null ;
2. Dao.
DAO d =
new Dao.
DAO ;
3. List
Model. Gaji
ld = new
List Model.
Gaji ;
4. DataGridViewRow
rw = new
DataGridViewRow ;
5. ld = d.getGajiPegawaiList;
6. dgvgaji.ColumnCount = 8;
7. dgvgaji.Columns[0].Name =
NIP ;
8. dgvgaji.Columns[1].Name =
Gaji Bulan ;
9. dgvgaji.Columns[2].Name =
Gaji Pokok ;
10. dgvgaji.Columns[3].Name =
Tun Anak ;
11. dgvgaji.Columns[4].Name =
Tun Beras ;
12. dgvgaji.Columns[5].Name =
Pot Pajak ;
13. dgvgaji.Columns[6].Name =
Pot Lain ;
14. dgvgaji.Columns[7].Name =
Gaji Bersih ;
15. for
int i = 0; i ld.Count; i++ {
16. String
no = i + 1 + ;
17. String
nip = ld[i].getNip+ ;
18. string
gaji_bulan = OTP
.otpld[i].getGaji_Bulan + ,
kodegeser .Encrypttbadmin.Text,
Convert .ToInt3223;
19. String
gaji_pokok = OTP
.otpld[i].getGajiPokok + ,
kodegeser .Encrypttbadmin.Text,
Convert .ToInt3223;
20. String
tun_anak = OTP
.otpld[i].getTunAnak + ,
kodegeser .Encrypttbadmin.Text,
Convert .ToInt3223;
21. String
tun_beras = OTP
.otpld[i].getTunBeras + ,
kodegeser .Encrypttbadmin.Text,
Convert .ToInt3223;
22. String
pot_pajak = OTP
.otpld[i].getPotPajak + ,
kodegeser .Encrypttbadmin.Text,
Convert .ToInt3223;
23. String
pot_lain = OTP
.otpld[i].getPotLain + ,
kodegeser .Encrypttbadmin.Text,
Convert .ToInt3223;
24. String
gaji_bersih = OTP
.otpld[i].getGaji_bersih + ,
kodegeser .Encrypttbadmin.Text,
Convert .ToInt3223;
25. string
[] row = new
string [] { nip, gaji_bulan,
gaji_pokok, tun_anak, tun_beras, pot_pajak, pot_lain, gaji_bersih };
26. dgvgaji.Rows.Addrow;}
27. MessageBox
.Show this
, Data Berhasil Di Dekripsi
;}
13
rumus dan dengan kunci pada textbox yang disubtitusikan pada class kodegeser yang telah disubtitusikan dengan menggunakan nilai kunci 11 dan menampilkan
data tersebut pada datagridview.
Proses perhitungan waktu enkripsi data juga diterapkan dan ditampilkan ketika admin melakukan proses menyimpan data gaji ke dalam database. Hal ini berguna
untuk memberikan informasi tentang kecepatan algoritma yang digunakan untuk enkripsi data. Waktu proses akan keluar jika inisialisasi masukan yang dilakukan
tidak ada kesalahan, artinya data dapat masuk ke dalam database. Proses ini dapat dilihat pada Gambar 12.
Gambar 12 Informasi Waktu Proses.
Gambar 12 merupakan waktu yang diperoleh hasil dari proses enkripsi dengan data asli sebagai berikut :
Gaji Bulan = June-2014 Gaji Pokok = 2900000
Tunjangan IS = 290000 Tunjangan Anak = 58000
Tunjangan Beras = 300000 Tunjangan Pajak = 145000
Potongan IPN = 191400 Potongan Pajak = 145000
Potongan Lain-lain = 87000 Gaji Bersih = 3026000
Hasil dari proses enkripsi data tersebut dapat dilihat pada informasi berikut ini : Gaji Bulan =
KKPC_IE Gaji Pokok = jXZV[V
Tunjangan IS = jXZV[V Tunjangan Anak = mYZV[
Tunjangan Beras = kQZV[V Tunjangan Pajak = iU_V[V
Potongan IPN = iX[R[V Potongan Pajak = iU_V[V
Potongan Lain-lain = `VZV[ Gaji Bersih = kQXP[V
Form Report Data Gaji merupakan hasil inputan ke dalam database pada
Form Manage Data Gaji pada Gambar 9 yang nantinya juga akan di printout atau
14
disimpan dalam bentuk file dalam beberapa format dokumen yakni Excel.xls, Word.doc atau PDF.pdf. Data yang tedapat pada Report data gaji adalah
gabungan dari beberapa data pegawai yg ada pada database data pegawai dan data gaji pegawai yang telah didekripsikan, dapat dilihat pada Gambar 12.
Gambar 12 Form Report Data Gaji
Dari skenario pengujian yang dilakukan dapat diperoleh hasil pengujian sesuai dengan yang diharapkan. Dari hasil pengujian pada setiap item yang ada
pada aplikasi peminjaman barang ini terangkum pada Tabel Hasil Pengujian Sistem yang dibangun perlu diuji dan dianalisis untuk melihat apakah sudah
memenuhi kebutuhan dan perancangan sistem. Pengujian sistem menggunakan pengujian black box yaitu metode pengujian yang berfokus pada persyaratan
fungsional perangkat lunak yang dibuat. Hasil pengujian sistem yang telah dibuat, ditunjukkan pada Tabel 4.
Tabel 4
Tabel Hasil Pengujian BlackBox
No Item yang Diuji
Sifat Pengujian
Cara Pengujian
Hasil yang Diharapkan Hasil
Uji 1.
Login Normal
Memasukkan Username :
Password : Sistem akan
menampilkan pesan “Selamat Datang” dan
juga menampilkan halaman utama Sistem.
Sesuai
Data Salah Memasukkan
Username : Password :
Sistem tidak akan menampilkan halaman
utama dan akan muncul pesan kesalahan
“Periksa Username dan Password”
Sesuai
2. Manage
Normal Menyimpan dan Sistem akan
Sesuai
15
Data Pegawai
mengubah data pegawai sesuai
dengan field yang
disediakan, dan menghapus data
pegawai. menampilkan pesan jika
data berhasil disimpan, diubah, dan dihapus dan
akan menampilkan semua data pegawai di
tabel pegawai yang telah dikelolah oleh admin
pada Form Manage Data Pegawai
Data Salah Memasukkan
NIP pegawai yang telah
disimpan, menyimpan
data dengan field yang
kosong. Sistem tidak akan
mnyimpan, mengubah dan menghapus data
pegawai, namun akan menampilkan pesan
kesalahan. Sesuai
3. Manage
Data Gaji Normal
Menghitung, menyimpan dan
menghapus data gaji pegawai
sesuai dengan field yang
disediakan. Menampilkan Data gaji
yang dikelolah pada form manage data gaji
yang telah terenkripsi pada database gaji
pegawai. Sesuai
Data salah Memasukkan
NIP pegawai yang telah
dihitung gajinya dan disimpan,
menyimpan data tanpa
menghitung gaji terlebih dahulu
Sistem tidak akan mnyimpan, mengubah
dan menghapus data pegawai, namun akang
menampilkan pesan kesalahan.
Sesuai
4. Report
Data Pegawai
Normal Melihat data
pegawai, simpan data
pegawai dalam bentuk file,
cetak data pegawai
Report data pegawai akan menampilkan Data
pegawai yang ada pada database pegawai untuk
di simpan atau dicetak sesuai keinginan admin.
Sesuai
5. Report
Data Gaji Normal
Melihat data pegawai gaji,
simpan data gaji dalam bentuk
file, cetak data gaji
Report data gaji akan menampilkan data gaji
pegawai yang ada pada database gaji yang telah
didekripsikan oleh sistem untuk di simpan
atau dicetak sesuai keinginan admin.
Sesuai
16
Berdasarkan hasil pengujian blackbox testing dari setiap item, dapat dijelaskan bahwa setiap menu yang ada sudah dapat berjalan sesuai dengan
fungsinya masing-masing baik dalam kelompok uji secara normal maupun dalam kelompok uji tidak normal atau pengujian pesan kesalahan semuanya telah
berjalan sesuai dengan rancangan yang telah dibangun.
Performance testing merupakan salah satu model yang dimiliki oleh black box testing. Performance testing merupakan evaluasi kemampuan program untuk
beroperasi dengan benar dipandang dari sisi acuan kebutuhan seperti kecepatan eksekusi program. [7].
Dalam analisa ini akan dilakukan beberapa pengujian dengan nominal gaji yang akan dienkripsikan. Hal ini dilakukan guna mengetahui apakah nominal gaji
yang karakternya panjang akan memakan waktu yang lebih lama dengan nominal gaji yang lebih pendek. Kunci yang digunakan memliki panjang 13 karakter.
Untuk panjang nominal gaji yang akan digunakan maksimal memiliki panjang delapan karakter dan terpendek akan digunakan lima karakter, karena sistem yang
dibuat merupakan enkripsi gaji yang terdiri dari lima sampai delapan angka nominal gaji pegawai.
Tabel 3
Analisa Waktu terhadap Panjang Password Panjang
Kunci karakter
Panjang Nominal Gaji
karakter Rata-rata Waktu
Proses ms
13 5
0,005 13
6 0,0010
13 7
0,0011 13
8 0,0011
Hasil percobaan waktu rata-rata tiap baris pada Tabel 3 dilakukan sebanyak 30 kali percobaan, sehingga diperoleh rata-rata waktu prosesnya. Dari hasil rata-rata
waktu proses pada Tabel 3, maka dapat disimpulkan bahwa peningkatan panjang jumlah karakter nominal gaji yang akan dienkripsi juga mempengaruhi rata-rata
waktu proses, maka dapat diambil kesimpulan bahwa waktu proses dipengaruhi oleh jumlah data yang digunakan. Dalam hal ini, waktu proses dipengaruhi oleh
panjang karakter nominal gaji yang dimasukan.
Pada pengujian tingkat keamanan ini, akan digunakan metode Kasiski Examination. Kasiski Examination mengambil keuntungan dari kenyataan bahwa
sejumlah kata umum akan dienkripsi dengan huruf kunci yang sama, menurut pengumpulan pengulangan huruf pada ciphertext. Tes Kasiski akan efektif, jika
terjadi banyak pengulangan pada ciphertext yang dihasilkan. [8].
Berikut adalah contoh ciphertext yang memiliki perulangan dan mengijinkan seorang kriptanalis untuk mengetahui panjang kunci yang digunakan.
Plaintext : 12345 5536 2467 12345 2253 234 2467
key : SEAN
Ciphertext :
17
bwrzf et{`sa|gsvnbwrzfes|fva|`qa|gsv
Perulangan karakter bwrzf diasumsikan bahwa datanya memiliki plaintext
yang sama. Jarak perulangannya adalah 16 karakter, berarti memiliki kemungkinan panjang kunci adalah 16, 8, 4, atau 2. Perulangan |gsv juga
diasumsikan bahwa datanya memilik plaintext yang sama, dengan jarak perulangan sebesar 20 karakter, berarti kemungkinan panjang kunci yang
digunakan adalah 20, 10, 5, 4, atau 2. Dengan mengambil persamaan dari keduanya, maka disimpulkan bahwa panjang kuncinya adalah 2 atau 4.
Metode Kasiski hanya dapat menyimpulkan panjang kunci yang digunakan untuk enkripsi data, akan tetapi tidak dapat memprediksi kunci yang digunakan
untuk proses enkripsi data.
5. Simpulan