BAB IV IMPLEMENTASI DAN PENGUJIAN SISTEM
4.1 Implementasi Sistem Tahap implementasi sistem merupakan tahap eksekusi dari rancangan sistem yang telah dibuat menjadi kode program sehingga dapat dihasilkan suatu sistem yang siap untuk digunakan sesuai dengan fungsional yang telah ditetapkan pada tahap analisis dan perancangan. Pada awal tahap implementasi ini diuraikan spesifikasi perangkat keras dan perangkat lunak yang digunakan dalam implementasi pembuatan program, implementasi enkripsi dan dekripsi kriptografi hibrida dari algorithma Ron, Shamir, Adleman(RSA) dan Advanced Encryption Standard(AES)-128, serta implementasi interface aplikasi “Note Encryptor” setelah diimplementasikan pada sistem operasi Andorid.
4.1.1 Perangkat Pendukung yang Digunakan Dalam proses pembuatan aplikasi ini, tentunya membutuhkan perangkat keras (hardware) dan perangkat lunak (software). Berikut merupakan spesifikasi dari perangkat keras dan perangkat lunak yang digunakan. 1. Perangkat Keras (Hardware) a. Spesifikasi perangkat keras smartphone Smartphone digunakan untuk menjalankan aplikasi yang telah dibangun.
67
68
Smartphone yang digunakan adalah Samsung GT-S5670 dengan spesifikasi sebagai berikut: a. Sistem operasi
: Android 2.2.1 (Froyo)
b. CPU
: 600 MHz
c. Memori
: 256 MB RAM
d. Dimensi layar
: QVGA 240 x 320 (Internal)
e. Kamera
: 5 MP (auto focus)
f. Fitur lain
: A-GPS, sensor Accelerometer, Wi-Fi, Bluetooth
b. Spesifikasi perangkat keras komputer Komputer digunakan untuk membangun aplikasi. Adapun komputer yang digunakan memiliki spesifikasi sebagai berikut: a. Sistem Operasi
: Windows 7 Ultimate
b. CPU
: Intel Core 2 Duo processor 2.0 GHz
c. Memori
: 2 GB
d. VGA
: 732 MB
e. Harddisk
: 250 GB
f. Lain-lain
: Monitor, Mouse dan Keyboard
2. Perangkat Lunak (Software) Perangkat lunak yang digunakan dalam pembangunan aplikasi ini memiliki spesifikasi sebagai berikut: a. Bahasa pemrograman Java
69
Dalam pembangunan aplikasi ini digunakan Java Development Kit (JDK) 1.6 dan Java Runtime Environment (JRE). b. Eclipse Galileo Untuk memudahkan dalam pengembangan aplikasi, maka digunakan IDE karena memiliki beberapa fasilitas yang diperlukan dalam pembangunan perangkat lunak. Adapun dalam pengembangan aplikasi ini digunakan Eclipse versi 3.5 Galileo dikarenakan telah mendukung Android Development Tools. c. Android SDK (Software Development Kit) Android SDK menyediakan development environment dengan semua komponen yang diperlukan. Antara lain tools pengembangan, libraries, dokumentasi, dan contoh aplikasi serta disertakan pula emulator untuk mensimulasikan aplikasi berjalan pada perangkat. Adapun dalam pengembangan aplikasi ini SDK yang digunakan adalah SDK versi 2.2 (Gingerbread). d. ADT (Android Development Tools) Android membuat kostum plugin untuk IDE Eclipse, sehingga dengan adanya ADT ini memberikan kemudahan dalam pengembangan aplikasi, membuat tampilan antarmuka aplikasi, menambahkan komponen yang diperlukan, men-debug aplikasi dengan menggunakan perangkat SDK Android, dan bahkan membungkus aplikasi yang telah dikembangkan untuk di distribusikan. Adapun dalam pengembangan aplikasi ini ADT yang digunakan adalah ADT versi 8.0.1.
70
4.1.2 Implementasi Kriptografi Hibrida(RSA dan AES) Pada tahap ini akan dilakukan implementasi dari analisis kriptografi hibrida(RSA dan AES-128) kedalam kode program, pada laporan tugas akhir ini kode program telah terlampir dengan nama class CryptoHybrid, berikut ini sebagian kode dalam bahasa pemrograman java: package ta.NEDv1.program; import java.math.BigInteger; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec;
public class CryptoHibryd {
//============== METHODS ===================== // Method yang membuat Ciphertext (E) private int[] genCiphertext(int[] param) { //cetakNilai("param", param.length); int[] temp = new int[getTotalChar()]; for (int i = 0; i < param.length; i++) { temp[i] = (int) (Math.pow(param[i], getE()) % getN()); } return temp; } // Method untuk membuat plaintext (D) private String genPlaintext(int[] param) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < param.length; i++) { BigInteger POW = pow(BigInteger.valueOf(param[i]), BigInteger.valueOf(getD())); BigInteger MOD = POW.mod(BigInteger.valueOf(getN())); sb.append((char) MOD.intValue()); } return sb.toString();
71
} /** * Method yang melakukan enkripsi * */ private int[] encryptRSA(String plaintext) { // Tentukan jumlah karakter yang akan diproses // Jumlah karakter berdasarkan banyaknya huruf setTotalChar(plaintext.length()); // Sediakan dua buah array untuk menampung ASCII dan CIPHERTEXT int arrASCII[] = new int[getTotalChar()]; int arrCiphertext[] = new int[getTotalChar()]; // Langkah 1: setP(11); setQ(13); // Langkah 2: setN(getP() * getQ()); // Langkah 3: setTetha((getP() - 1) * (getQ() - 1)); // Langkah 4: // set kunci public setE(7); // Looping berikut untuk mengambil huruf demi huruf yg terdapat pada plaintext // Lalu memasukkan seluruh karakter ke dalam array for (int i = 0; i < plaintext.length(); i++) { // casting dari Char ke ASCII arrASCII[i] = plaintext.charAt(i); } // Langkah 5: // Bangkitkan kunci privat generateKeyPrivate(arrASCII); // Bentuk Ciphertext arrCiphertext = genCiphertext(arrASCII); // Kembalikan Ciphertext ke driver return arrCiphertext; } /** * Method untuk melakukan dekripsi * */
72
private String decryptRSA(String decriptedAESString){ int [] arrayAngkaDariAES = getArrayIntFromAES(decriptedAESString); // method untuk mandapatkan array integer // Langkah 1: setP(11); setQ(13); // Langkah 2: setN(getP() * getQ()); // Langkah 3: setTetha((getP() - 1) * (getQ() - 1)); // Langkah 4 // Set kunci private: setD(103); return genPlaintext(arrayAngkaDariAES); } private int [] getArrayIntFromAES(String decriptedAESString){ String [] arrtemp = decriptedAESString.split(" "); int [] res = new int[arrtemp.length]; for(int i=0 ; i<arrtemp.length; i++){ res[i] = Integer.parseInt(arrtemp[i]); } return res; } /** * Method untuk pemangkatan */ private static BigInteger pow(BigInteger base, BigInteger exponent) { BigInteger result = BigInteger.ONE; while (exponent.signum() > 0) { if (exponent.testBit(0)) result = result.multiply(base); base = base.multiply(base); exponent = exponent.shiftRight(1); } return result; } void cetakNilai(String title, Object value){ System.out.println(title + ": " + value);}
73
/*==============AES Tools================*/
private byte[] encrypt(byte[] raw, byte[] clear) throws Exception { SecretKeySpec s_kunci_rahasia = SecretKeySpec(raw, "AES"); Cipher cipher = Cipher.getInstance("AES"); cipher.init(Cipher.ENCRYPT_MODE, s_kunci_rahasia); byte[] encrypted = cipher.doFinal(clear); return encrypted; }
new
private byte[] decrypt(byte[] raw, byte[] encrypted) throws Exception { SecretKeySpec s_kunci_rahasia = new SecretKeySpec(raw, "AES"); Cipher cipher = Cipher.getInstance("AES"); cipher.init(Cipher.DECRYPT_MODE, s_kunci_rahasia); byte[] decrypted = cipher.doFinal(encrypted); return decrypted; } private byte[] rawKey(byte[] kunci,int tipe) throws Exception { KeyGenerator kunci_gen = KeyGenerator.getInstance("AES"); SecureRandom acak = SecureRandom.getInstance("SHA1PRNG"); acak.setSeed(kunci); kunci_gen.init(tipe, acak); SecretKey kunci_rahasia = kunci_gen.generateKey(); byte[] raw = kunci_rahasia.getEncoded(); return raw; } @SuppressWarnings("unused") private String d_hexa(String hexa) { return new String(k_byte(hexa)); } private String k_hexa(byte[] buffer) { if (buffer == null) { return ""; } StringBuffer hasil = new StringBuffer(2 * buffer.length); for (int i = 0; i < buffer.length; i++) { appendHex(hasil, buffer[i]); } return hasil.toString();
74
4.1.3 Implementasi Database pada SQLite Pada tahap ini akan dilakukan implementasi dari perancangan database kedalam kode program, pada laporan tugas akhir ini kode program telah terlampir dengan nama class DBUtility, berikut ini sebagian kode dalam bahasa pemrograman java: package taNED.gs.database; import java.util.ArrayList; import java.util.Date; import java.util.List; import android.content.ContentValues; import android.content.Context;
import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import taNED.gs.entity.Note; public class DBUtility { private static final String DB_NAME = "catattan"; private static final String[] TABEL = { "notepad" }; private static final String[] NOTEPAD_COL = { "id", "title", "data", "date" }; private static int DB_VERSION = 1; private final Context context; private SQLiteDatabase db; private DatabaseHelper DBHelper; public DBUtility(Context ctx) { this.context = ctx; this.DBHelper = new DatabaseHelper(context); } public DBUtility open() { db = DBHelper.getWritableDatabase(); return this; } public void close() { DBHelper.close();
75
} public SQLiteDatabase sqliteDB() { return db; } /*INSERT*/ public long insertNote(Note note){ ContentValues cv = new ContentValues(); cv.put(NOTEPAD_COL[0], note.getId()); cv.put(NOTEPAD_COL[1], note.getTitle().equals("")?"UNTITLED":note.getTitle()); cv.put(NOTEPAD_COL[2], note.getNote()); cv.put(NOTEPAD_COL[3], new Date().toString()); return db.insert(TABEL[0], null, cv); } /*RETRIEVE ALL*/ public List
getAllNote(){ Cursor c = db.query(TABEL[0], NOTEPAD_COL, null, null, null, null, "date desc"); List notes = new ArrayList(); if( c!= null){ while(c.moveToNext()){ Note n = new Note(); n.setId(c.getString(0)); n.setTitle(c.getString(1)); n.setNote(c.getString(2)); n.setDate(c.getString(3)); notes.add(n); } c.close(); } return notes; }
4.1.4 Implementasi Tampilan Antarmuka Aplikasi Pada tahap implementasi tampilan antarmuka ini akan dijelaskan bagaimana program sistem ini bekerja dengan memberikan tampilan antarmuka aplikasi yang dibuat. Pada bagian ini akan ditampilkan antarmuka aplikasi sesuai dengan fitur-fitur yang terdapat pada aplikasi,
76
serta akan dijelaskan pula bagaimana aplikasi ini bekerja pada tiap tampilan antarmuka. 1. Implementasi Tampilan Layar Startup Tampilan startup adalah tampilan yang akan muncul pertama kali ketika aplikasi dijalankan. Implementasi dari tampilan layar startup adalah seperti pada gambar 4.1 di bawah ini.
Gambar 4.1 Implementasi Tampilan Layar Startup
2. Implementasi Tampilan Layar Menu Utama Tampilan layar menu utama adalah tampilan untuk memilih fiturfitur yang ada pada aplikasi, yang terdiri dari tiga pilihan menu utama diantaranya; list note, help, dan exit. Implementasi dari tampilan layar menu utama adalah seperti pada gambar 4.2 di bawah ini.
77
Gambar 4.2 Implementasi Tampilan Layar Menu Utama
3. Implementasi Tampilan Layar List Note Tampilan layar alert dialog menu list note adalah seperti pada gambar4.3 di bawah ini:
Gambar 4.3 Implementasi Antarmuka Alert Dialog Menu List Note
78
Setelah pengguna menekan tombol go pada alert tersebut maka akan tampil tampilan layar list note awal seperti pada gambar4.4 dibawah ini.
Gambar 4.4 Implementasi Tampilan Layar List Note Awal
Untuk membuat catatan pengguna memilih menu add note maka akan tampil tampilan layar editor note awal seperti gambar4.5 dibawah ini.
Gambar 4.5 Implementasi Tampilan Antarmuka Editor Note Awal
79
Setelah muncul class editor note tersebut pengguna dipersilahkan mengisi semua kolom sesuai keterangan kolom yang desediakan, kolom pertama untuk judul, kolom kedua untuk password dengan tipe character, dan kolom ketiga untuk inputan note. Tampilan contoh inputan catatan adalah seperti gambar4.6 dibawah ini.
Gambar 4.6 Implementasi Contoh Membuat Catatan
Kemudian akan muncul tampilan list note setelah membuat catatan, seperti pada gambar4.7 dibawah ini.
80
Gambar 4.6 Implementasi Tampilan List Note Setelah Membuat Catatan
Untuk melihat kembali catatan yang tadi dibuat penggguna menekan dan memilih list catatan yang akan dilihat dan akan tampil catatan yang telah terenkripsi. Tampilan editor note setelah membuat catatan adalah seperti gambar4.7 dibawah ini.
Gambar 4.7 Implementasi Tampilan Editor Note Setelah Membuat Catatan
81
Untuk dekripsi catatan silahkan masukan password yang di inputkan pengguna saat membuat catatan, maka akan tampil tampilan editor note setelah dekripsi seperti gambar4.8 dibawah ini.
Gambar 4.8 Implementasi Tampilan Editor Note Setelah Dekripsi
4. Implementasi Tampilan Layar Help Tampilan antarmuka fitur Bantuan ini merupakan tabulasi yang menyajikan tiga bantuan yaitu tentang aplikasi, langkah aplikasi, dan informasi dari istilah-istilah kriptografi yang diterapkan pada aplikasi. Implementasi dari tampilan layar help adalah seperti di bawah ini:
Tampilan layar help dengan pilihan tentang aplikasi adalah tampilan bantuan pada aplikasi yang menjelaskan semua hal tentang aplikasi. Tampilan layar tentang aplikasi seperti gambar4.9 dibawah ini.
82
Gambar 4.9 Implementasi Tampilan Layar Tentang Aplikasi
Tampilan layar help dengan pilihan langkah aplikasi adalah tampilan bantuan pada aplikasi yang menjelaskan mengenai langkah penggunaan aplikasi. Tampilan layar langkah aplikasi seperti gambar4.10 dibawah ini.
Gambar 4.10 Implementasi Tampilan Layar Langkah Aplikasi
83
Tampilan layar help dengan pilihan informasi adalah tampilan bantuan pada aplikasi yang menjelaskan istilah-istilah kriptografi yang diterapkan pada aplikasi. Tampilan layar informasi seperti gambar4.11 dibawah ini.
Gambar 4.11 Implementasi Tampilan Layar Informasi
4.2 Pengujian Sistem Pengujian sistem merupakan hal terpenting yang bertujuan untuk menemukan kesalahan-kesalahan atau kekurangan-kekurangan pada perangkat lunak yang dibangun. Pengujian bermaksud untuk mengetahui perangkat lunak yang dibuat sudah memenuhi kriteria yang sesuai dengan tujuan perancangan perangkat lunak tersebut. Pengujian dilakukan dalam dua metode, yaitu pengujian white box dan black box. Pengujian white box dilakukan dengan menguji atribut dan method yang ada pada kelas-kelas kode program yang dibangun. Pengujian white box dilakukan pada proses pembuatan aplikasi. Sedangkan pengujian black box dilakukan untuk
84
menguji apakah sistem yang dikembangkan sesuai dengan apa yang tertuang dalam spesifikasi fungsional sistem yang telah dirancang sebelumnya. Pengujian black box dilakukan setelah proses pembuatan aplikasi selesai dan sebelum aplikasi didistribusikan kepada pengguna.
4.2.1 Pengujian Alpha Pengujian alpha digunakan untuk menguji aplikasi dengan berbagai kondisi, metode yang digunakan pada pengujian alpha adalah metode white-box. Pengujian white-box digunakan untuk meyakinkan semua perintah dan kondisi pada aplikasi Note Encyrptor Droid V.1 dieksekusi secara minimal. Pengujian white-box yang pada aplikasi Note Encyrptor Droid V.1 menggunakan dua tools yaitu flow graph yang digunakan untuk menggambarkan alur dari algoritma dan graph matrix yang digunakan untuk menggenerasi flow graph. Adapun pengujian white-box pada aplikasi Note Encyrptor Droid V.1 adalah sebagai berikut:
1. Pengujian Enkripsi Rsa 1.
setTotalChar(plaintext.length());
2.
int arrASCII[] = new int[getTotalChar()];
3.
int arrCiphertext[] = new int[getTotalChar()];
4.
setP(11);
5.
setQ(13);
6.
setN(getP() * getQ());
7.
setTetha((getP() - 1) * (getQ() - 1));
8.
setE(7);
9.
for (int i = 0; i < plaintext.length(); i++) {
85
10. arrASCII[i] = plaintext.charAt(i);} 11. generateKeyPrivate(arrASCII); 12. arrCiphertext = genCiphertext(arrASCII); 13. return arrCiphertext; 14. int[] temp = new int[getTotalChar()]; 15. for (int i = 0; i < param.length; i++) { 16. temp[i] = (int) (Math.pow(param[i], getE()) % getN());} 17. return temp;
a. Flow Graph Enkripsi Rsa Flow graph Enkripsi RSA dapat dilihat pada Gambar 4.12 dibawah ini. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Gambar 4.12 Flow Graph Enkripsi Rsa
86
Dari Gambar4.12 dapat dihitung cyclomatic complexity sebagai berikut: Region = 3 V(G) = 18 edge – 17 node + 2 = 3 Jadi, cyclomatic complexity untuk Gambar 4.12 adalah 3. Berdasarkan cyclomatic complexity tersebut, Gambar 4.12 memiliki 3 path yang terdiri dari: Path 1: 1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17 Path 2: 1-2-3-4-5-6-7-8-9-10-11-12-13-9-10-11-12-13-14-1516-17 Path 3: 1-2-3-4-5-6-7-8-9-10-11-12-13-9-10-11-12-13-14-1516-17-15-16-17 b. Graph Matrix Enkripsi RSA Tabel4.1 Graph Matrix Enkripsi RSA
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 1 1 1 1 1 1 1 1
1 1 1 1 1
87
2. Pengujian Enkripsi AES 1.
Cipher cipher = Cipher.getInstance("AES");
2.
cipher.init(Cipher.ENCRYPT_MODE, s_kunci_rahasia);
3.
byte[] encrypted = cipher.doFinal(clear);
4.
return encrypted;
5.
KeyGenerator kunci_gen = KeyGenerator.getInstance("AES");
6.
SecureRandom acak = SecureRandom.getInstance("SHA1PRNG");
7.
acak.setSeed(kunci);
8.
kunci_gen.init(tipe, acak);
9.
SecretKey kunci_rahasia = kunci_gen.generateKey();
10.
byte[] raw = kunci_rahasia.getEncoded();
11.
return raw;
12.
if (buffer == null)
13.
return "";
14.
StringBuffer hasil = new StringBuffer(2 * buffer.length);
15.
for (int i = 0; i < buffer.length; i++)
16.
appendHex(hasil, buffer[i]);
17.
return hasil.toString();
88
a. Flow Graph Enkripsi AES Flow graph Enkripsi AES dapat dilihat pada Gambar 4.13 dibawah ini.
1
2
3
4
5
6
7
8
9
10
11
12 13
14
15
16
17
Gambar 4.13 Flow Graph Enkripsi AES
Dari Gambar 4.20 dapat dihitung cyclomatic complexity sebagai berikut: Region = 2 V(G) = 17 edge – 17 node + 2 = 2
89
Jadi, cyclomatic complexity untuk Gambar 4.13 adalah 2. Berdasarkan cyclomatic complexity tersebut, Gambar 4.13 memiliki 2 path yang terdiri dari: Path 1: 1-2-3-4-5-6-7-8-9-10-11-12-13 Path 2: 1-2-3-4-5-6-7-8-9-10-11-12-14-15-16-17 b. Graph Matrix Enkripsi AES Tabel 4.2. Graph Matrix Enkripsi AES
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 1 1 1 1 1
1 1
3. Pengujian Dekripsi AES 1. Cipher cipher = Cipher.getInstance("AES"); 2. cipher.init(Cipher.DECRYPT_MODE, s_kunci_rahasia); 3. byte[] decrypted = cipher.doFinal(encrypted); 4. return decrypted;acak.setSeed(kunci);
90
5. KeyGenerator kunci_gen = KeyGenerator.getInstance("AES"); 6. SecureRandom acak = SecureRandom.getInstance("SHA1PRNG"); 7. acak.setSeed(kunci); 8. kunci_gen.init(tipe, acak); 9. byte[] raw = kunci_rahasia.getEncoded(); 10. return raw;return ""; 11. int panjang = hexa_string.length() / 2; 12. byte[] hasil = new byte[panjang]; 13. for (int i = 0; i < panjang; i++) 14. hasil[i] = Integer.valueOf(hexa_string.substring(2 * i,2 * i + 2),16).byteValue(); 15. return hasil;return hasil.toString(); 16. String aes = decrypt(kunci, chiperText, tipe); 17. return decStr;
c. Flow Graph Dekripsi AES Flow graph Dekripsi AES dapat dilihat pada Gambar 4.14 dibawah ini.
91
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
18
17
Gambar 4.14 Flow Graph Dekripsi AES
Dari Gambar 4.14 dapat dihitung cyclomatic complexity sebagai berikut: Region = 2 V(G) = 17 edge – 17 node + 2 = 2 Jadi, cyclomatic complexity untuk Gambar 4.14 adalah 2.
92
Berdasarkan cyclomatic complexity tersebut, Gambar 4.14 memiliki 2 path yang terdiri dari: Path 1: 1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17 Path 2: 1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17-13-14-15-16
d. Graph Matrix Dekripsi AES Tabel 4.3. Graph Matrix Dekripsi AES
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 1 1 1 1 1
1 1
4. Pengujian Dekripsi Rsa 1. int [] arrayAngkaDariAES = getArrayIntFromAES(decriptedAESString); 2. setP(11); 3. int arrCiphertext[] = new int[getTotalChar()];
93
4. setP(11); 5. setQ(13); 6. setN(getP() * getQ()); 7. setTetha((getP() - 1) * (getQ() - 1)); 8. setD(103); 9. return genPlaintext(arrayAngkaDariAES);10. arrASCII[i] = plaintext.charAt(i);} 11. StringBuilder sb = new StringBuilder(); 12. for (int i = 0; i < param.length; i++) { 13. return arrCiphertext; 14. BigInteger POW = pow(BigInteger.valueOf(param[i]), BigInteger.valueOf(getD())); 15. BigInteger MOD = POW.mod(BigInteger.valueOf(getN())); 16. sb.append((char) MOD.intValue()); 17. return sb.toString();
94
c. Flow Graph Dekripsi Rsa Flow graph Dekripsi RSA dapat dilihat pada Gambar 4.15 dibawah ini. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Gambar 4.15 Flow Graph Dekripsi Rsa
Dari Gambar 4.15 dapat dihitung cyclomatic complexity sebagai berikut: Region = 2
95
V(G) = 17 edge – 17 node + 2 = 2 Jadi, cyclomatic complexity untuk Gambar 4.15 adalah 2. Berdasarkan cyclomatic complexity tersebut, Gambar 4.15 memiliki 2 path yang terdiri dari: Path 1: 1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17 Path 2: 1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17-12-13-1415-16-17
d. Graph Matrix Dekripsi RSA Tabel 4.4 Graph Matrix Dekripsi RSA
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 1 1 1 1 1 1 1 1 1 1 1
96
4.2.2 Pengujian Betha Pengujian betha berfokus pada pengujian fungsional yang bertujuan untuk menguji sistem pengembangan dari versi alpha dengan menggunakan metode pengujian black box. Pengujian betha dilakukan melalui tahap pengujian performansi atau uji coba langsung kepada pengguna sistem untuk mencoba aplikasi yang baru dan hasil dari percobaan tersebut dicatat untuk mengetahui tingkat keakuratan dan keberhasilan sistem. Pengujian dilakukan dengan menjalankan semua fitur-fitur Aplikasi dan fungsi-fungsi Aplikasi. Kemudian pengujian dikatakan berhasil jika semua fitur tampil dan pesan menyatakan fungsi berhasil. Dibawah ini tabel dari pengujian fitur dan fungsi aplikasi. Tabel 4.5 Hasil Pengujian Aplikasi NoteEncryptorDroidV.1
Hasil
No.
Fitur-Fitur Aplikasi
1
Tampil PlashScreen
√
Tampil
2
Tampil Menu Utama
√
Tampil
3
Masuk Menu Add Note
√
Tampil List Catatan Awal
4
Masuk Menu Kriptografi
√
Tampil List View Catatan
5
Masuk Menu Informasi
√
6
Pilih Menu Exit
√
Berhasil Keluar
7
Tampil Editor Catatan
√
Tampil
8
Tampil List Catatan
√
Tampil
9
Membuat Catatan
√
Berhasil
10
Menyimpan Catatan
√
Ada pesan pemberitahuan
Sukses Gagal
Keterangan
Tampil Tabulasi dua Informasi
97
Tabel 4.5 Hasil Pengujian Aplikasi NoteEncryptorDroidV.1(lanjutan)
Hasil
No.
Fitur-Fitur Aplikasi
11
Enkripsi Catatan
√
12
Tampil List catatan
√
Tampil
13
Dekripsi Catatan
√
Berhasil
14
Mengubah Catatan
√
Ada pesan pemberitahuan
15
Menghapus Catatan
√
Ada pesan pemberitahuan
16
Menampilkan Pesan
√
Berhasil
√
Tampil
√
Berhasil
√
Tampil
√
Tampil
√
Berhasil
17 18 19
20 21
Menampilkan List View Istilah Kriptografi Select List View Menampilkan Informasi Tentang Aplikasi Menampilkan Informasi Procedure Aplikasi Keluar dari Aplikasi
Sukses Gagal
Keterangan Enkripsi tampil ketiaka select list view