BAB 3
ANALISIS DAN PERANCANGAN SISTEM
3.1. Analisis Sistem
Analisis sistem adalah penguraian suatu sistem utuh kedalam bagian-bagian komponennya. Dalam proses analisis sistem dilakukan identifikasi terhadap masalah-masalah didalam sistem sehingga sistem yang dirancang dapat berjalan dengan baik serta mampu memenuhi kebutuhan pengguna (user).
3.1.1.Analisis Masalah
Analisis masalah merupakan proses mengidentifikasi sebab dan akibat dibangunnya sebuah sistem dengan menguraikan sistem utuh ke dalam komponen-komponen pembentuknya agar sistem yang akan dibangun dapat berjalan dan mampu memenuhi kebutuhan pengguna (user).
Identifikasi masalah-masalah tersebut dapat ditunjukkan dengan diagram Ishikawa. Diagram Ishikawa/diagram fishbone/diangram herringbone/diagram cause-and-effect
Sulit menjaga kerahasiaan dan
keamanan file teks Penggunaan algoritma pengamanan dan kompresi file yang belum tepat Ukuran file teks
yang besar
Belum ada aplikasi yang
mengkombinasikan algoritma affine cipher, RSA-CRT dan AUC untuk enkripsi dan kompresi teks
Tidak ada aplikasi yang paling tepat untuk enkripsi dan kompresi teks
Gambar 3.1. Diagram Ishikawa
3.1.2.Analisis Kebutuhan Sistem
Analisis kebutuhan sistem adalah sebuah proses memahami kebutuhan sistem baru yang akan dibuat. Dalam analisis kebutuhan sistem terdapat dua jenis kebutuhan yang harus dianalisis, yaitu kebutuhan fungsional dan kebutuhan non-fungsional.
a. Kebutuhan Fungsional
Kebutuhan fungsional merupakan kebutuhan yang berisi proses atau fungsi yang nantinya akan dilakukan sistem yang dirancang. Kebutuhan fungsional yang harus dipenuhi dalam merancang sistem pengamanan dan kompresi file teks antara lain :
1. Sistem mampu membaca string dalam file teks yang diinputkan oleh user
2. Sistem mampu melakukan enkripsi dan dekripsi file teks dengan menggunakan algoritma Affine Cipher
3. Sistem mampu melakukan enkripsi dan dekripsi kunci Affine Cipher dengan
menggunakan algoritma RSA-CRT
4. Sistem mampu melakukan kompresi dan dekompresi pesan tersandi (ciphertext)
dengan algoritma Alternate Unary Code
Orang Metode
Mengamankan dan meminimalkan ukuran file teks
5. Sistem mampu menyimpan file hasil dekripsi maupun kompresi dengan ekstensi yang berbeda dengan file asli
6. Sistem mampu menghitung parameter kompresi yaitu Compression Ratio (CR) dan
Space Saving (SS)
b. Kebutuhan Non-fungsional
Kebutuhan non-fungsional adalah kebutuhan yang harus dipenuhi agar sistem/aplikasi mendapat feedback (umpan balik) yang baik dari pengguna. Kebutuhan non-fungsional
yang harus dipenuhi oleh aplikasi yang akan dirancang, yaitu : 1. Kinerja
Sistem yang akan dibangun harus mampu melakukan proses enkripsi-dekripsi dan kompresi-dekompresi terhadap file teks (doc dan txt).
2. Mudah Digunakan
Sistem harus dibangun sesederhana mungkin sehingga dapat dengan mudah digunakan oleh pengguna.
3. Ekonomis
Sistem yang dibangun harus dapat bekerja/beroperasi tanpa perangkat tambahan yang memerlukan biaya yang besar.
4. Dokumentasi
Sistem yang akan dibangun harus mampu menyimpan file hasil enkripsi maupun kompresi.
5. Kontrol
Sistem yang akan dibangun harus menampilkan pesan error untuk setiap input maupun proses yang tidak sesuai
6. Pelayanan
3.1.3. Analisis Proses
Dalam penelitian ini, plainteks akan dienkripsi dengan algoritma Affine Cipher, lalu kunci
Affine Cipher tersebut akan di enkripsi oleh algoritma RSA-CRT. File teks yang telah di
enkripsi (ciphertext) akan di kompresi dengan algoritma Alternate Unary Code.
Untuk mengembalikan cipherteks menjadi teks awal (plainteks), pertama sistem akan mendekompresi file terkompresi sehingga diperoleh cipherteks. Setelah itu sistem mendekripsi cipherkey dengan kunci privat RSA-CRT untuk memperoleh kunci Affine
Cipher, kemudian dengan kunci Affine Cipher tersebut file terenkripsi (cipherteks) akan
didekripsi dan menghasilkan plainteks.
a. Analisis Proses Pembangkitan Kunci RSA-CRT
Proses pembangkitan kunci RSA-CRT dilakukan untuk memperoleh kunci publik
dan kunci privat RSA-CRT yang akan digunakan dalam proses enkripsi dan dekripsi kunci
Affine Cipher dengan algoritma RSA-CRT.
� ≡ 97 ��� (718)
Nilai d tidak dapat langsung ditentukan menggunakan CRT karena gcd(726,718) 1, oleh karena itu persamaan tersebut harus diubah dengan memanfaatkan hukum kanselasi, yaitu :
� −1≡59−1(��� 726)
Diperoleh gcd(363,359) = 1, maka persamaan tersebut dapat diselesaikan dengan
�′ = 99491
6. Maka diperoleh kunci publik dan kunci privat sebagai berikut
������� = (�,�), ������� = (�,�,��,��)
������� = (478151, 522713), ������� = (727,719,59,97)
b. Analisis Proses Enkripsi File Teks dengan Affine Cipher
Misalkan akan mengenkripsi file dengan isi teks "BAYATI 141421043" maka prosesnya adalah sebagai berikut :
1. Plainteks (m) = BAYATI 141421043
�1(�)≡191→ ¿
�2(�)≡13(65) + 101 (��� 256)
�2(�)≡946 (��� 256)
�2(�)≡178→ ²
�3(�)≡13(89) + 101 (��� 256)
�3(�)≡1258 (��� 256)
�3(�)≡234→ ê
�4(�)≡13(65) + 101 (��� 256)
�4(�)≡946 (��� 256)
�4(�)≡178→ ²
�5(�)≡13(84) + 101 (��� 256)
�5(�)≡1193 (��� 256)
�5(�)≡169→ ©
�6(�)≡13(73) + 101 (��� 256)
�6(�)≡1050 (��� 256)
�6(�)≡26→[���]
�7(��)≡13(32) + 101 (��� 256)
�7(��)≡517 (��� 256)
�7(��)≡5→[���]
�8(1)≡13(49) + 101 (��� 256)
�8(1)≡738 (��� 256)
�8(1)≡226→ â
�9(4)≡13(52) + 101 (��� 256)
�9(4)≡777 (��� 256)
�9(4)≡9→[���]
�10(1)≡13(49) + 101 (��� 256)
�10(1)≡226→ â
�11(4)≡13(52) + 101 (��� 256)
�11(4)≡777 (��� 256)
�11(4)≡9→[���]
�12(2)≡13(50) + 101 (��� 256)
�12(2)≡751 (��� 256)
�12(2)≡239→ ï
�13(1)≡13(49) + 101 (��� 256)
�13(1)≡738 (��� 256)
�13(1)≡226→ â
�14(0)≡13(48) + 101 (��� 256)
�14(0)≡725 (��� 256)
�14(0)≡213→ Õ
�15(4)≡13(52) + 101 (��� 256)
�15(4)≡777 (��� 256)
�15(4)≡9→[���]
�16(3)≡13(51) + 101 (��� 256)
�16(3)≡764 (��� 256)
�16(3)≡252→ü
Maka diperoleh cipherteks : ¿²ê²©[SUB][ENQ]â â ïâÕ ü
c. Analisis Proses Enkripsi Kunci Affine dengan RSA-CRT
Kunci Affine Cipher yang digunakan pada proses enkripsi sebelumnya akan dienkripsi
untuk menghasilkan cipherkey. Proses enkripsi kunci Affine Cipher dengan menggunakan algoritma RSA-CRT sebagai berikut :
Plainkey a = 13 dan b = 101
Plainkey akan dienkripsi menggunakan kunci publik RSA-CRT yang telah
� = 478151 � = 522713
Proses enkripsi kunci Affine Cipher dengan rumus : � = �� ����
�� = ��� ����
�� = 13478151 ��� 522713
�� = 485215
�� = ��� ����
�� = 101478151 ��� 522713
�� = 428983
Diperoleh nilai cipher a = 485215 dan cipher b = 428983
d. Analisis Proses Kompresi Cipherteks dengan AUC
Yang akan dikompresi pada tahap ini adalah cipherteks yang telah dihasilkan pada proses enkripsi sebelumnya yaitu : ¿²ê²©[SUB][ENQ]â â ïâÕ ü
Sehingga diperoleh :
String = ¿²ê²©[SUB][ENQ]â â ïâÕ ü
[SUB] = [SUBSTITUTE]
[ENQ]= [ENQIURY]
| String | = 16
∑(character set) = {¿, ², ê, ©, [SUB], [ENQ], â, [TAB] , ï, Õ, ü }
| ∑ | = 11
Tabel 3.1. Perhitungan ASCII Code
Hasil kompresi dengan algortima Alternate Unary Code (AUC) dapat dilihat pada
Tabel 3.2. Karakter disusun secara descending (diurutkan berdasarkan frekuensi terbesar).
Tabel 3.2. Perhitungan AUC Code
Pada tabel 3.2. dapat dilihat bahwa total bit setelah dikompresi dengan algoritma
AUC adalah 75 bit. Tahap selanjutnya adalah menyusun kode tiap karakter sesuai dengan posisi karakter pada string awal yaitu ¿²ê²©[SUB][ENQ]â â ïâÕ ü
Sehingga diperoleh string bit :
1110110111101101111101111110111111100100101111111100111111111010111111111 10 = 75 bit
Sebelum hasil kompresi dituliskan kedalam file, terlebih dahulu ditambahkan bit –
bit padding dan flagging. Penambahan bit-bit padding dilakukan agar jumlah bit dapat
dibagi menjadi per 8 bit. Bit-bit yang ditambahkan sebagai padding adalah bit 0. Jumlah
bit hasil kompresi yang telah dilakukan adalah 75 bit sehingga agar bisa dibagi menjadi per 8 bit harus ditambahkan bit-bit padding sebanyak 5 bit. Maka diperoleh padding
00000. Agar sistem mengetahui berapa banyak padding yang ditambahkan maka
dilakukan penambahan bit-bit flagging dengan menambahkan biner sesuai dengan
padding yang ditambahkan. Karena bit-bit padding yang ditambah sebanyak 5 maka
flagging yang ditambahkan adalah biner dari 5 (dalam 8 bit) yaitu 00000101. Sehingga
diperoleh string bit akhir sebagai berikut :
111011011110110111110111111011111110010010111111110011111111101 0111111111100000000000101
Jadi total akhir bit yang diperoleh adalah 75 bit + 5 bit padding + 8 bit flag = 88 bit
Compression Ratio (��)
�� = ����������������������������
�� =
�� = 0,6875
Diperoleh nilai �� = 0,6875, berarti data yang terkompres besarnya adalah 68,75% dari data awal atau dapat pula dikatakan perbandingan antara data terkompresi dengan data awal adalah 0,6875 : 1
Diperoleh nilai �� = 31,25, berarti banyaknya data yang berhasil dihemat setelah proses kompresi sebesar 31,25% dari data awal.
e. Analisis Proses Dekompresi Cipherteks dengan AUC
Diketahui string bit file terkompres adalah sebagai berikut :
111011011110110111110111111011111110010010111111110011111111101 0111111111100000000000101
Untuk melakukan proses dekompresi, terlebih dahulu sistem harus mengurangkan jumlah bit data terkompres dengan panjang bit padding dan flaggingnya. Bit-bit flagging
pada string bit tersebut adalah 8 bit terakhirnya yaitu 00000101 jika kita ubah kedalam bentuk desimal nilainya adalah 5, yang menunjukkan jumlah padding yang ditambahkan.
Dengan demikian dapat ditentukan panjang string bit yang harus dibaca sistem untuk dilakukan proses dekompresi yaitu bit terkompres – padding – flagging = 88 – 5 – 8 = 75
bit pertama dari string bit terkompres.
Pembacaan dilakukan bit-per-bit lalu membandingkannya dengan tabel AUC. Bit
bit berikutnya menjadi 110 sesuai dengan karakter “²” dalam tabel, maka karakter “²” dimasukkan dalam string dekompres. Begitu seterusnya hingga diperoleh string hasil dekompresi yaitu : ¿²ê²©[SUB][ENQ]â â ïâÕ ü.
f. Analisis Proses Dekripsi Cipherkey dengan RSA-CRT
Untuk mengembalikan cipherkey seperti semula, maka dilakukan proses dekripsi
cipherkey dengan algoritma RSA-CRT sebagai berikut :
1. Proses dekripsi cipher a = 485215
�� = ��� ����
2. Proses dekripsi cipher b = 428983
�� = ��� ����
�� = 42898359��� 727
�� = 101
�� = ��� ����
�= 727 × 719 = 522713
Berdasarkan perhitungan dekripsi dengan kunci privat RSA-CRT diatas maka
diperoleh nilai plainkey a = 13 dan b = 101.
g. Analisis Proses Dekripsi Cipherteks dengan Affine Cipher
Setelah diperoleh plainkey a dan b, maka proses dekompresi cipherteks menggunakan
�3(ê)≡(197)(234−101) (��� 256)
�3(ê)≡26201 (��� 256)
�3(ê)≡89→ Y
�4(2)≡(197)(178−101)(��� 256)
�4(2)≡15169 (��� 256)
�4(²)≡65→ A
�5(©)≡(197)(169−101) (��� 256)
�5(©)≡13396 (��� 256)
�5(©)≡84→ T
�6([���])≡(197)(26−101) (��� 256)
�6(([���])≡35657 (��� 256)
�6(([���])≡73→ �
�7([���])≡(197)(5−101) (��� 256)
�7([���])≡31520 (��� 256)
�7([���])≡32→[��]
�8(â)≡(197)(226−101) (��� 256)
�8(â)≡24625 (��� 256)
�8(â)≡49→ 1
�9([���])≡(197)(9−101) (��� 256)
�9([���])≡32308 (��� 256)
�9([���])≡52→4
�10(â)≡(197)(226−101) (��� 256)
�10(â)≡24625 (��� 256)
�10(â)≡49→ 1
�11([���])≡(197)(9−101) (��� 256)
�11([���])≡32308 (��� 256)
�12(ï)≡(197)(239−101) (��� 256)
�12(ï)≡27186 (��� 256)
�12(ï)≡50→ 2
�13(â)≡(197)(226−101) (��� 256)
�13(â)≡24625 (��� 256)
�13(â)≡49→ 1
�14(Õ)≡(197)(213−101) (��� 256)
�14(Õ)≡22064 (��� 256)
�14(Õ)≡48→ 0
�15([���])≡(197)(9−101) (��� 256)
�15([���])≡32308 (��� 256)
�15([���])≡52→4
�16(ü)≡(197(252−101) (��� 256)
�16(ü)≡29747 (��� 256)
�16(ü)≡51→3
Maka diperoleh plainteks : BAYATI 141421043 3.2. Pemodelan Sistem
Pemodelan sistem bertujuan untuk memperoleh gambaran semua kondisi dan bagian-bagian yang berperan dalam sistem yang dirancang. Pada penelitian ini pemodelan sistem dilakukan dengan menggunakan use case diagram, activity diagram, dan sequence
diagram.
3.2.1.Use Case Diagram
Use case merupakan gambaran dari aktivitas atau tindakan yang dapat dilakukan user
terhadap sistem yang akan dibangun/dirancang. Use case digunakan untuk memodelkan
fungsi yang disediakan oleh sistem, sehingga user mengerti cara kerja dan kegunaan
sistem yang akan dibangun tersebut. Bentuk use case diagram pada sistem yang
pengirim
penerima Enkrips i File Teks
Dekripsi File Teks Enkrips i Key
Kompresi File Teren kripsi
Dekripsi Key Dekompresi File Terenk ripsi
input File Teks
input File Terkompresi (.auc)
<<include>> Simpan File
Lihat isi File teks input kunci privat, dan
cipherkey
<<extend>> <<include>>
bangkitkan kunci privat dan kunci publik
<<include>>
Gambar 3.2. Use case Diagram pada Sistem
3.2.2.Activity Diagram
Activitydiagram merupakan bagian dari pemodelan sistem yang mendeskripsikan proses
kerja dalam sebuah sistem. Activity diagram untuk proses pembangkitan kunci dapat
dilihat pada Gambar 3.3.
penerima sistem
Gambar 3.3. Activity Diagram pada Proses Pembangkitan Kunci
Activity diagram untuk proses enkripsi – kompresi file teks dapat dilihat pada
pengirim sistem
Tampil isi file teks, Kunci Affine
Input file Cek file .doc ata .txt
Enkripsi file teks
Proses enkripsi
Enkripsi kunci Affine
Tampil kunci publik
Kompresi cipherteks Menampilkan cipherkey
Simpan cipherkey, Kunci privat dan File terkompresi
Input kunci publik Tampil cipherteks
Proses kompresi
File harus doc / txt Ya
Tidak
Proses enkripsi
Tampil Rc, Ss, dan waktu proses
Gambar 3.4. ActivityDiagram pada Proses Enkripsi-Kompresi
Pada gambar 3.4, user menginputkan file teks yang akan dienkripsi, format file
harus yang berekstensi .doc atau .txt. Lalu sistem akan menampilkan isi file teks tersebut
dan kunci Affine. Untuk melakukan proses enkripsi user harus menekan tombol enkripsi
maka sistem akan mengenkripsi file teks tersebut dan menampilkan hasil enkripsi
(cipherteks) di layar. Untuk mengenkripsi kunci Affine terlebih dahulu input kunci publik
RSA-CRT lalu proses enkripsi kunci Affine maka sistem akan menampilkan cipherkey.
Setelah itu user dapat menyimpan file terenkripsi (cipherteks) dan cipherkey. Untuk
kompresi teks file, setelah proses kompresi selesai file terkompresi akan langsung tersimpan di memori dan akan tampil parameter kompresi di layar.
Activity diagram untuk proses dekompresi – dekripsi file teks dapat dilihat pada
Gambar 3.5.
penerima sistem
Input file terkompresi (.auc)
Menampilkan lokasi file terkompresi
Dekompresi file
Menampilkan cipherteks
Input cipherkey
Menampilkan kunci affine Input kunci privat RSA-CRT
Simpan plainteks
Dekripsi cipherteks Menampilkan plainteks
Dekripsi cipherkey
Gambar 3.5. ActivityDiagram pada Proses Dekompresi – Dekripsi
Pada gambar 3.5., user menginputkan file terkompresi (.auc) lalu sistem melakukan
proses dekompresi maka sistem akan menampilkan hasil dekompresi berupa cipherteks. Untuk mengembalikan cipherteks menjadi plainteks harus dilakukan dekripsi terhadap cipherteks tersebut. User terlebih dahulu harus menginputkan cipherkey dan kunci privat
3.2.3.Sequence diagram
Sequence diagram merupakan suatu diagram yang memperlihatkan interaksi antar objek
didalam sistem. Sequence diagram pada sistem yang dirancang dapat dilihat pada Gambar
3.6 dan Gambar 3.7.
pengirim Buka File dengan AffineEnkripsi Teks Buka Kunci Publik
tampil waktu proses, Cr, Ss
Gambar 3.6. SequenceDiagram pada Proses Enkripsi – Kompresi
penerima Buka File
tampil kunci privat dekripsi cipherkey tampil kunci Affine
3.3. Flowchart
Flowchart adalah gambaran prosedur kegiatan dari suatu program yang ditampilkan
dalam bentuk bagan atau diagram.
3.3.1.Flowchart Sistem
Flowchart sistem merupakan bagan yang menunjukkna alur kerja atau apa yang sedang
dikerjakan didalam sistem secara keseluruhan dan menjelaskan urutan dari prosedur-prosedur yang ada didalam sistem. Gambaran rancangan flowchart sistem yang akan
dibangun dapat dilihat pada Gambar 3.8. Mulai
Input plainteks (*.doc/*.txt)
Enkripsi Plainteks
cipherteks
Enkripsi Kunci
cipherkey
Kompresi cipherteks
File Teks terkompresi
Dekompresi file teks terkompresi
cipherteks
Dekripsi cipherkey
Plainteks
End Kunci enkripsi
Agar dapat lebih memahami alur proses sistem yang akan dibangun perhatikan ilustrasi sistem pada gambar 3.9.
Flowchart dari masing-masing algoritma tersebut akan dijelaskan pada subbab berikutnya.
3.3.2.Flowchart Algoritma Affine Cipher
Gambar 3.10. Flowchart Algoritma Affine Cipher
Gambar 3.9. Menggambarkan alur pada proses enkripsi-dekripsi algoritma Affine
Cipher. Pertama-tama user menginputkan file teks *.doc atau *.txt sebagai plainteks.
Sistem akan mengacak secara otomatis kunci � dan kunci �, dengan ketentuan
���(�, 256) = 1 dan kunci � bernilai 0 < � ≤256. Sistem akan membaca setiap karakter dalam plainteks dan mengenkripsinya menjadi karakter lain dalam ASCII menjadi cipherteks dengan menggunakan rumus enkripsi � =��+�(����). Untuk mengembalikan cipherteks menjadi plainteks digunakan rumus dekripsi D = �−1(� −
�)(����).
Gambar 3.11. Flowchart Pembangkit Kunci Algoritma RSA-CRT
Gambar 3.11. menggambarkan alur pada proses pembangkitan kunci publik dan kunci privat algoritma RSA-CRT. Proses pembangkitan kunci ini akan dilakukan oleh
sistem. Kunci privat yang akan dibangkitkan adalah bilangan prima p dan q, serta nilai dP dan dQ. Sedangkan kunci publiknya adalah nilai e dan N. Bilangan prima p dan q dibangkitkan secara acak dengan ketentuan ���(� −1,� −1) = 2. Nilai dP dan dQ dipilih secara acak oleh sistem dengan memenuhi syarat ���(��,� −1) = 1,
3.3.4.Flowchart Algoritma RSA-CRT
Gambar 3.12. Flowchart Algoritma RSA-CRT
Gambar 3.12. menggambarkan alur pada proses enkripsi dan dekripsi algoritma RSA-CRT. Pada sistem ini algoritma RSA-CRT akan digunakan untuk mengenkripsi
kunci Affine Cipher yang digunakan untuk mengenkripsi plainteks. Affine Cipher
memiliki dua buah kunci, yaitu kunci � dan � yang akan digunakan sebagai plainkey.
Plainkey akan dienkripsi dengan kunci publik RSA-CRT dengan rumus C = �� ��� �
sehingga menghasilkan cipherkey. Cipherkey didekripsi dengan kunci privat RSA-CRT
untuk mengembalikannya menjadi plainkey� dan �.
3.3.5.Flowchart Algoritma Alternate Unary Code
Mulai
C = ����� �
Input Plainkey M
Selesai Cipherkey
��=�������
��=�������
� ≡ ������ � ≡ ������
Mulai
Code[0] = “0” i = 0
i < n
Code[i+1] = “1” + code[i]
i = i + 1
Output Code[0...n-1]
Selesai ya
tidak
Hitung charset (n)
Gambar 3.13. Flowchart Algoritma Alternate Unary Code
Gambar 3.13. menggambarkan alur proses pada algoritma Alternate Unary Code. Pada sistem ini yang akan dikompresi adalah cipherteks yang dihasilkan dari proses enkripsi dengan algoritma Affine Cipher. Dimana n adalah jumlah dari character set yang
digunakan dalam cipherteks tersebut. Karakter pertama dengan indeks 0 akan dibaca dengan bit “0”, karakter kedua (indeks ke 1) dibaca dengan menambahkan bit “1” disebelah kiri karakter sebelumnya menjadi “10”. Karakter ketiga akan menjadi bit “1”+”10” = “110”, dan begitu seterusnya.
3.4. Perancangan Antarmuka Sistem (Interface)
3.4.1.Perancangan Form Halaman Utama
Form Halaman Utama adalah form yang akan pertama muncul saat aplikasi pertama dijalankan. Pada halaman utama terdapat label nama aplikasi dan button seperti Gambar 3.14.
Gambar 3.14. Rancangan Form Menu Utama
Keterangan :
1. Label Judul → Nama aplikasi
2. Button GenKey → Menampilkan halaman Pembangkit Kunci
3. Button EnKomp → Menampilkan halaman Enkripsi – Kompresi
4. Button DeDekomp → Menampilkan halaman Dekripsi – Dekompresi
5. Button Bantuan → menampilkan halaman Bantuan
6. Button Tentang → Menampilkan halaman Tentang
3.4.2.Perancangan Form Bangkit Kunci RSA-CRT
Form bangkit kunci adalah form yang akan muncul setelah button Bangkit Kunci pada form halaman utama diklik. Form ini untuk membangkitkan kunci publik dan kunci privat algoritma RSA-CRT. Perancangan form bangkit kunci dapat dilihat pada Gambar 3.15.
Kunci private
Bangkit Kunci RSA-CRT
1Gambar 3.15. Rancangan Form Bangkit Kunci
Keterangan :
1. Label Judul → Judul form
2. Button GenKey → Membangkitkan kunci privat dan kunci publik
3. TextField txtP → Menampilkan nilai kunci privat p
4. TextField txtQ → Menmapilkan nilai kunci privat q
5. TextField txtdP → Menampilkan nilai kunci privat dP
6. TextField txtdQ → Menampilkan nilai kunci privat dQ
7. TextField txtN → Menampilkan nilai kunci publik N
8. TextField txtE → Menampilkan nilai kunci publik e
9. Button btnSimpan → Menyimpan kunci privat dan kunci publik
3.4.3.Perancangan Form Enkripsi – Kompresi
Form Kompresi merupakan form yang akan tampil saat button Enkripsi-Kompresi pada halaman utama diklik. Form ini untuk mengenkripsikan isi file teks yang diinputkan menjadi cipherteks serta mengkompresi cipherteks tersebut. Perancangan form enkripsi-kompresi dapat dilihat pada Gambar 3.16.
Kunci a Kunci b
Enkripsi
Gambar 3.16. Rancangan Form Enkripsi - Kompresi
Keterangan :
1. Button btnOpen → mencari file teks (.doc / .txt) yang akan di enkripsi
2. textField txtDir → menampilkan lokasi file teks
3. textField keyA → menampilkan kunci acak a
4. textField keyB → menampilkan kunci acak b
5. textArea plain → menampilkan isi teks dari file yang diinputkan (plainteks)
6. button btnEnkrip → mengenkripsi plainteks
7. textArea cipher → menampilkan hasil enkripsi (cipherteks)
8. label lblWaktu → menmapilkan waktu proses enkripsi
9. button btnSimpan → menyimpan cipherteks
11. textField txtN → menampilkan kunci publik N
12. textField txtE → menampilkan kunci publik e
13. button btnEnkripKey → mengenkripsi kunci Affine Cipher
14. textArea cipherkey →menampilkan cipherkey
15. button btnSvCKey → menyimpan cipherkey
16. button btnKompres → mengkompresi cipherteks
17. label lblRc → menampilkan nilai Ratio Compression
18. label lblSs → menampilkan nilai Space Saving
19. label lblRT → menampilkan waktu proses kompresi
20. button btnBersih → mengosongkan semua teks
21. button btnHome → kembali ke halaman utama
3.4.4.Perancangan Form Dekompresi – Dekripsi
Form Dekripsi merupakan form yang akan tampil saat button Dekompresi-Dekripsi pada halaman utama diklik. Form ini untuk mendekripsikan file terenkripsi menjadi cipherteks lalu mendekripsi cipherteks tersebut menjadi plainteks kembali. Rancangan form Dekompresi-Dekripsi dapat dilihat pada Gambar 3.17.
D ek o mpr esi Fi l e En k r i psi Ku n c i
Keterangan :
1. Button btnOpen → mencari file terkompresi
2. textField txtDir → menampilkan lokasi file terkompresi
3. button btnDekom → mendekompresi file terkompresi
4. textArea cipher → menampilkan file hasil dekompresi (cipherteks)
5. button btnCiphK → mencari cipherkey
6. textField cA → menampilkan cipherkey a
7. textField cB → menampilkan cipherkey b
8. button btnDekrK → mendekripsi cipherkey
9. textField kA → menampilkan kunci a yang teklah didekripsi
10. textField kB → menampilkan kunci b yang telah didekripsi
11. button btnKpriv → mencari kunci privat RSA-CRT
12. textField txtP → menampilkan kunci privat P
13. textField txtQ → menampilkan kunci privat dP
14. textField txtdP → menampilkan kunci privat Q
15. textField txtdQ → menampilkan kunci privat dQ
16. button btnDekrC → mendekripsi cipherteks
17. textArea plain → menampilkan hasil dekripsi cipherteks
18. button btnSimpan → menyimpan plainteks
19. label lbl_TPDekomp → menampilkan waktu proses dekompresi file
20. label lbl_DekripKey → menampilkan waktu proses dekripsi cipherkey
21. label lbl_TPDekrip → menampilkan waktu proses dekripsi cipherteks
22. button btnBersih → membersihkan semua hasil inputan di halaman
23. button btnHome → kembali ke halaman utama
3.4.5.Perancangan Form Bantuan
Bantuan pada halaman utama diklik. Rancangan form bantuan dapat dilihat pada Gambar 3.18.
X
Kembali
BANTUAN
Enkripsi - Kompresi 2
4 3
Dekompresi - Dekripsi
1
Gambar 3.18. Rancangan Form Bantuan
Keterangan :
1. Label Judul → Judul form/halaman yang tampil
2. Label EnKomp → Bantuan pada form enkripsi - kompresi
3. Label DeDekomp → Bantuan pada form dekompresi - dekripsi
4. Button btnKembali → Kembali ke halaman utama
3.4.6.Perancangan Form Tentang
Form Tentang berisi tentang keterangan aplikasi dan pembuat aplikasi. Form ini akan tampil saat user mengklik button Tentang pada halaman utama. Rancangan form tentang
X
Kembali 4
Tent ang AKRIKOMP1
2
3
5
6
Gambar 3.19. Rancangan Form Tentang
Keterangan :
1. Label Judul → Judul form/halaman yang tampil
2. Label Tentang → Keterangan tentang aplikasi
3. Label Foto → Foto penulis
4. Label Profil → Profil penulis
5. Label Logo → Logo Fasilkom-TI USU
BAB 4
IMPLEMENTASI DAN PENGUJIAN SISTEM
4.1. Implementasi Sistem
Implementasi sistem merupakan tahap dimana hasil perancangan yang telah dibuat sebelumnya diimplementasikan dengan menggunakan suatu bahasa pemrograman tertentu sehingga menjadi suatu aplikasi yang dapat digunakan. Sistem yang dibuat menggunakan bahasa pemrograman java pada editor Netbeans IDE.
Pada sistem ini terdapat 6 form yang dibuat, yaitu form Halaman Utama, form Bangkit Kunci, form Enkripsi-Kompresi, form Dekompresi-Dekripsi, form Bantuan, dan form Tentang. Deskripsi mengenai tampilan tiap form akan dijelaskan pada sub bab berikutnya.
4.1.1.Form Menu Utama
Gambar 4.1. Form Menu Utama
4.1.2.Form Bangkit Kunci
Form bangkit kunci akan tampil setelah user menekan button bangkit kunci pada menu utama. Form ini berfungsi untuk membangkitkan kunci algoritma RSA-CRT yang akan digunakan dalam proses enkripsi dan dekripsi kunci enkripsi teks (kunci
Affine Cipher).
Pada form ini user akan menekan button bangkit kunci sehingga sistem akan memproses pembangkitan kunci RSA-CRT dan akan menampilkannya pada textfield
yang tersedia. Waktu proses pembangkitan kunci akan tampil di bagian bawah form. User dapat menyimpan kunci yang telah dibangkitkan dengan menekan button simpan. Kunci akan tersimpan dalam dua file dengan nama yang sama, namun ekstensi file berbeda. Kunci publik akan tersimpan dengan ekstensi .kpub dan kunci privat aka tersimpan dengan ekstensi .kpriv. Kunci publik digunakan untuk mengenkripsi kunci Affine dan kunci privat digunakan untuk dekripsi kunci Affine.
4.1.3.Form Enkripsi – Kompresi
Form enkripsi-kompresi akan tampil setelah user menekan button enkripsi-kompresi pada menu utama. Form ini digunakan dalam proses enkripsi teks dan kompresi teks
yang telah dienkripsi. Bentuk tampilan form enkripsi-kompresi dapat dilihat pada Gambar 4.3.
Gambar 4.3. Form Enkripsi - Kompresi
Dalam penggunaannya pertama-tama user akan menginputkan file teks (.doc atau .txt) dengan cara menekan button . Setelah file diinputkan maka secara otomatis kunci affine cipher a dan b akan tergenerate. Isi file teks yang diinputkan akan tampil pada textarea plainteks. Untuk mengenkripsi plainteks user harus menekan button enkripsi dan hasilnya akan tampil pada textarea cipherteks. Simpan
cipherteks dengan menekan button simpan dan cipherteks akan disimpan dengan ekstensi file .aff.
Untuk mengenkripsi kunci Affine cipher, user harus menginputkan kunci publik
terlebih dahulu dengan menekan button Buka Kunci Publik maka kunci kublik akan tampil pada textfield yang tersedia. Enkripsi kunci affine dengan menekan button
Enkripsi Kunci Teks. Hasil enkripsi kunci affine akan tampil pada textarea cipherkey.
Simpan cipherkey dengan menekan button simpan cipherkey dan cipherkey akan
Untuk proses kompresi, user akan menekan button kompresi maka cipherteks akan terkompresi, dan stelah proses kompresi selesai file akan lagnsung tersimpan dengan nama file yang telah ditentukan user dengan ekstensi file .auc. Parameter kompresi (waktu kompresi, Compression Ratio dan Space Saving)akan tampil pada
label yang tersedia.
4.1.4.Form Dekompresi – Dekripsi
Form Dekompresi-Dekripsi akan tampil setelah user menekan button
dekompresi-dekripsi pada menu utama. Form ini digunakan dalam proses dekompresi cipherteks
terkompresi menjadi cipherteks awal dan mendekripsi cipherteks tersebut menjadi plainteks. Bentuk tampilan form Dekompresi-Dekripsi dapat dilihat pada Gambar 4.4.
Gambar 4.4. Form Dekompresi - Dekripsi
Dalam penggunaannya, pertama-tama user menginputkan file terkompresi dengan menekan button , lokasi file akan tampil pada textfield disebelah kanan
button. Untuk mendekompresi file terkompresi user menekan button dekompresi maka
hasil dekompresi akan tampil dalam textarea cipherteks.
Untuk mendekripsi cipherteks, terlebih dahulu user harus mendekripsi
cipherkey. Buka cipherkey dengan menekan button “Buka Cipherkey” maka cipherkey
akan tampil pada textfield cipherkey. Buka kunci privat untuk dekripsi cipherkey
button “Dekripsi Cipherkey” maka kunci Affine Cipher akan tampil pada textfield
kunci affine.
Setelah kunci affine diperoleh maka proses dekripsi cipherteks dapat dilakukan dengan menekan button “Dekripsi Cipherteks” dan hasilnya akan tampil pada textarea
plainteks. Plainteks dapat disimpan dengan menekan button Simpan Plainteks. Pada bagian keterangan akan ditampilkan waktu proses dekompresi file dan juga waktu proses dekripsi cipherteks.
4.1.5.Form Bantuan
Form Bantuan adalah form yang akan tampil setelah user menekan button bantuan pada menu utama. Form ini berisi cara penggunaan aplikasi dalam proses enkripsi-kompresi dan deenkripsi-kompresi-dekripsi file teks. Bentuk tampilan form bantuan dapat dilihat pada Gambar 4.5.
Gambar 4.5. Form Bantuan
4.1.6.Form Tentang
Form tentang merupakan form yang akan tampil setelah user menekan button tentang
Gambar 4.6. Form Tentang 4.2. Pengujian Sistem
Pengujian sistem dilakukan untuk mengetahui apakah aplikasi yang dibuat dapat berjalan sesuai dengan yang telah dirancang sebelumnya. Pengujian akan dilakukan pada proses pembangkitan kunci algoritma RSA-CRT, proses enkripsi file teks, proses enkripsi kunci, proses kompresi cipherteks, proses dekompresi, proses dekripsi kunci dan proses dekripsi cipherteks.
4.2.1.Pengujian Bangkit Kunci
Untuk membangkitkan kunci publik dan kunci privat RSA-CRT user harus menekan button bangkit kunci, maka sistem akan memproses pembangkitan kunci dan hasilnya akan ditampilkan pada masing-masing textfield.Hasil pengujian bangkit kunci dapat
Unutk menyimpan kunci privat dan kunci publik tersebut user harus menekan button simpan. Pengujian simpan kunci privat dan kunci publik dapat dilihat pada Gambar 4.8.
Gambar 4.8. Pengujian Simpan Kunci
Gambar 4.9. MessageBox Kunci Berhasil Disimpan
4.2.2.Pengujian Enkripsi Isi File Teks
Pengujian enkripsi dilakukan terhadap file doc. Tampilan isi file doc yang akan diuji dapat dilihat pada gambar 4.10.
Untuk melakukan enkripsi teks, user terlebih dahulu menginputkan file teks yang akan dienkripsi dengan menekan button . Lalu user dapat memilih file yang ingin dienkripsi. File yang akan dienkripsi harus berekstensi doc atau txt. Input file teks dapat dilihat pada Gambar 4.11.
Gambar 4.11. Input File Teks
Isi dari file yang telah dipilih akan tampil dalam textArea dan lokasi file tersebut
akan tampil pada textbox disebelah button . Kunci enkripsi akan muncul otomatis
secara acak setelah user menginputkan file teks yang akan dienkripsi, seperti Gambar 4.12.
Enkripsi teks dengan menekan button enkripsi dan cipherteks akan ditampilkan pada textArea cipherteks, seperti Gambar 4.13.
Gambar 4.13. Enkripsi Teks File
User dapat menyimpan file hasil enkripsi dengan menekan button Simpan. Setelah proses sismpan selesai maka akan muncul message box seperti pada Gambar 4.14.
Gambar 4.14. MessageBox Simpan File
4.2.3.Pengujian Enkripsi Kunci
Untuk mengenkripsi kunci, yang pertama harus dilakukan user adalah menginputkan kunci publik dengan menekan button Buka Kunci Publik maka kunci publik akan tampil pada textfield yang tersedia. Lalu user dapat mengenkripsi kunci dengan
Gambar 4.15. Buka Kunci Publik
Gambar 4.16. Enkripsi Kunci Teks
Gambar 4.17. Save Dialog Cipherkey
4.2.4.Pengujian Kompresi Cipherteks
Pada pengujian kompresi, yang akan dikompres adalah cipherteks dari teks asal. Proses kompresi dilakukan sistem saat user telah menekan button Kompresi. Saat proses kompresi sedang berlangsung semua button yang ada akan menjadi disable. Setelah proses kompresi selesai akan muncul save dialog untuk menyimpan file hasil
kompresi. Tampilan save dialog dapat dilihat pada Gambar 4.18.
Gambar 4.18. Save Dialog Hasil Kompresi
Saat proses kompresi selesai, sistem juga akan menampilkan parameter kompresi Rc (Ratio of Compression) dan Ss (Space Saving) pada bagian keterangan di
Gambar 4.19. Parameter Kompresi
Gambar 4.20. Isi File Hasil Kompresi
Isi file hasil kompresi berupa bit-bit hasil kompresi yang telah diubah ke dalam bentuk array byte.
4.2.5.Pengujian Dekompresi Cipherteks
Untuk melakukan dekompresi file, pertama-tama user harus menginputkan file terkompresi terlebih dahulu dengan menekan button . Setelah file diinputkan, lokasi file akan ditampilkan dalam textfield disebelah button . Proses dekompresi
akan dilakukan setelah user menekan button Dekompresi dan hasilnya akan ditampilkan pada textarea cipherteks, karena hasil dekompresi tersebut merupakan
Gambar 4.21. Input File Terkompresi
Gambar 4.22. Hasil Dekompresi File
4.2.6.Pengujian Dekripsi Kunci
Cipherkey” dan untuk menginputkan kunci privat tekan button “Buka Private Key”. Perhatikan Gambar 4.23 dan 4.24.
Gambar 4.23. Dialog Open Cipherkey
Gambar 4.24. Dialog Open Private Key
Setelah cipherkey dan private key diinputkan, maka user dapat mendekripsi
Gambar 4.25. Hasil Dekripsi Kunci
4.2.7.Pengujian Dekripsi Cipherteks
Untuk mendekripsi cipherteks terlebih dahulu user mendekripsi kuncinya. Setelah kunci terdekripsi maka user dapat mendekripsi cipherteks kembali menjadi plainteks dengan menekan button “Dekripsi Cipherteks”. Hasil dekripsi dapat dilihat pada Gambar 4.26.
4.2.8.Pengujian Waktu Proses Enkripsi – Dekripsi
Proses enkripsi maupun kompresi dilakukan terhadap isi dari file teks. Pengujian dilakukan terhadap file teks dengan jumlah karakter (panjang string) yang berbeda-beda. Perhatikan Tabel 4.1.
Tabel 4.1. Pengujian Enkripsi – Dekripsi Teks Panjang String
(karakter) Waktu Enkripsi (ms) Waktu Dekripsi (ms)
16
Rata-rata 40,042 44,606
12000
Rata-rata 123,774 177,624
50000
Perbandingan waktu rata-rata enkripsi dan dekripsi dapat diilustrasikan pada grafik perbandingan seperti terlihat pada Gambar 4.27.
Gambar 4.27. Grafik Perbandingan Waktu Proses Enkripsi – Dekripsi Teks Berdasarkan grafik pada Gambar 4.27. dapat dilihat bahwa banyaknya karakter berbannding lurus dengan waktu proses enkripsi maupun dekripsi. Dengan demikian dapat disimpulkan bahwa semakin panjang data (semakin banyak karakter) yang akan diproses maka waktu enkripsi maupun dekripsinya juga akan semakin lama.
Pengujian enkripsi dan dekripsi kunci Affine Cipher dapat dilihat pada tabel 4.2.
Proses enkripsi dan dekripsi tersebut dilakukan dengan menggunakan algoritma RSA-CRT. Pengujian enkripsi dan dekripsi kunci dilakukan beberapa kali percobaan
dengan kunci Affine yang sama yaitu kunci a = 9 dan kunci b = 22.
Tabel 4.2. Pengujian Enkripsi – Dekripsi Kunci
Percobaan
16 1200 5600 12000 50000
Berdasarkan tabel 4.2. dapat diketahui bahwa waktu rata-rata yang dibutuhkan unutk enkripsi kunci Affine adalah 1,295 ms dan waktu rata-rata dekripsi adalah 0,765 ms.
Perbandingan waktu enkripsi dan dekripsi kunci Affine Cipher dapat dilihat pada
grafik 4.28.
Gambar 4.28. Grafik Perbandingan Waktu Enkripsi-Dekripsi Kunci
Berdasarkan grafik pada gambar 4.28 dapat dilihat bahwa waktu enkripsi dan dekripsi kunci cukup cepat karena tidak melebihi waktu 3 milidetik. Dapatpula dilihat bahwa waktu dekripsi lebih stabil daripada waktu untuk enkripsinya.
4.2.9.Pengujian Waktu Proses Kompresi - Dekompresi
Tabel 4.3. Pengujian Kompresi - Dekompresi
Pada tabel 4.3. dapat dilihat bahwa panjang data yang sama dapat memiliki nilai
�� dan �� yang berbeda, hal itu dikarenakan jumlah charset dan frekuensi kemunculan
1. Charset = 1
Data yang memiliki charset = 1 berarti semua karakter dalam data tersebut adalah sama. Pada percobaan yang dilakukan karakter yang digunakan adalah a yang memiliki kode AUC 0. Sehingga jika dituliskan dalam data terkompres menjadi 0000000000000000 = 16 bit. Padding = 0 karena 16 bit habis dibagi 8. Untuk mengetahui jumlah padding harus ditambahkan bit flag sepanjang 8 bit yang merupakan bit dari jumlah padding tersebut. Karena padding = 0, maka flagnya menjadi 00000000. Maka panjang data hasil kompresi adalah kode AUC + padding + bit flag = 16 bit + 0 bit + 8 bit = 24 bit.
2. Charset = 3
Data yang memiliki charset = 3 berarti mengandung 3 buah karakter berbeda didalamnya. Pada percobaan yang dilakukan karakter tersebut adalah a, b, dan c, yaitu “aaabbbbbbccccaaa” dengan frekuensi kemunculam masing masing karakter adalah 6, 6, dan 4. Sehingga diperoleh kode AUC a = 0, b = 10 dan c = 110. Sehingga jika dituliskan dalam data terkompres menjadi 000101010101010 110110110000 = 27 bit. Padding = 00000 = bit, sehingga jumlah bit dapat dibagi 8. Dengan demikian bit flag menjadi 00000101 = 8 bit. Maka panjang data hasil kompresi adalah 27 bit + 5 bit + 8 bit = 40 bit.
3. Hal yang sama juga berlaku terhadap data dengan panjang dan jumlah charset berbeda pada tabel 4.2.
Gambar 4.29. Grafik Perbandingan Cr Hasil Kompresi Karakter Homogen dan Heterogen
Gambar 4.30. Grafik Perbandingan Ss Hasil Kompresi Karakter Homogen dan Heterogen
Berdasarkan gambar 4.29. dan 4.30. dapat dilihat bahwa nilai Compression
Ratio (Cr) dan Space Saving (Ss) pada proses kompresi dengan isi konten karakter
homogen cenderung stabil dibandingkan dengan nilai Compression Ratio (Cr) dan 0
16 1200 5600 12000 50000
C
16 1200 5600 12000 50000
Space Saving (Ss) pada proses kompresi dengan isi konten karakter heterogen yang
cenderung berubah-ubah tergantung dari banyaknya character set dan frekuensi masing-masing character set tersebut.
Gambar 4.31. Grafik Perbandingan Waktu Kompresi dan Dekompresi
Berdasarkan Gambar 4.31. dapat dilihat bahwa waktu dekompresi relatif lebih lama dibandingkan waktu kompresi. Dapat dilihat pula bahwa grafik waktu kompresi dan dekompresi berbanding lurus dengan panjang data yang dikompresi, semakin besar data maka waktu yang dibutuhkan untuk melakukan kompresi dan dekompresi juga akan semakin lama.
BAB V
KESIMPULAN DAN SARAN
5.1. Kesimpulan
Berdasarkan hasil penelitian dan pengujian sistem yang telah dilakukan, maka dapat ditarik kesimpulan sebagai berikut :
1. Tidak terjadi perubahan atas panjang karakter plainteks setelah dilakukan proses enkripsi.
2. Waktu proses enkripsi dan dekripsi berbanding lurus dengan panjang karakter plainteks.
3. Pada proses kompresi, kompresi teks dengan karakter yang homogen akan menghasilkan nilai Compression Ratio (Cr) dan Space Saving (Ss) yang relatif
lebih stabil dibandingkan dengan teks yang memiliki karakter berbeda-beda (heterogen)
4. Jumlah character set dan frekuensi tiap character set yang berbeda-beda (heterogen) akan berpengaruh terhadap nilai Compression Ratio (Cr) dan Space
Saving (Ss) walaupun memiliki panjang data yang sama.
5.2. Saran
Adapun saran yang dapat diberikan penulis terhadap penelitian selanjutnya adalah sebagai berikut :
1. Diharapkan bagi penelitian selanjutnya tidak hanya mampu mengenkripsi dan mengkompresi karakter dalam file teks saja tetapi juga dapat dilakukan terhadap tabel, grafik maupun gambar dalam file teks.
2. Pada aplikasi yang dibuat hanya melakukan proses terhadap file teks berformat doc dan txt, diharapkan pengembangan berikutnya dapat digunakan file lainnya seperti pdf ataupun file rtf.
3. Bilangan prima yang dibangkitkan pada aplikasi ini hanya sampai batas 3 digit angka. Penulis berharap pada penelitian selanjutnya dapat dikembangkan hingga lebih dari 10 digit.