• Tidak ada hasil yang ditemukan

Pemodelan (modeling) adalah proses merancang piranti lunak sebelum melakukan pengkodean. Dengan menggunakan model, diharapkan pengembangan piranti lunak dapat memenuhi semua kebutuhan pengguna dengan lengkap dan tepat (Dharwiyanti & Wahono, 2003).

3.2.1. Unified Modeling Language (UML)

Unified modeling language adalah bahasa yang menjadi standar dalam industri untuk visualisasi, merancang dan mendokumentasikan sistem piranti lunak (Dharwiyanti & Wahono, 2003). Model UML yang digunakan pada penelitian ini antara lain adalah use case diagram, activity diagram serta sequence diagram.

3.2.1.1. Use case diagram

Use case diagram merupakan penggambaran fungsionalitas yang diharapkan dari sebuah sistem. Sebuah use case merepresentasikan sebuah interaksi antara aktor dengan sistem (Dharwiyanti & Wahono, 2003). Adapun use case dari sistem yang akan dibangun pada penelitian ini dapat dilihat pada Gambar 3.2.

18

Gambar 3.2 Use Case Diagram

Pada gambar 3.2, digambarkan hanya ada seorang aktor yaitu pengguna. Pengguna dapat menginput data, melakukan proses pengamanan dan pengungkapan. Use case pengamanan dan pengungkapan membutuhkan pengecekan inputan agar dapat dijalankan. Untuk lebih jelasnya, use case pengamanan dapat dilihat pada Tabel 3.1.

Tabel 3.1 Deskripsi Use Case Pengamanan

Name Pengamanan

Actors Pengguna

Description Proses memasukkan pesan asli dan kunci, kemudian melakukan enkripsi menggunakan algoritma Vigenere dan Myszkowski, lalu menampilkan hasilnya

Basic Flow Pengguna memasukkan pesan asli dan kunci, kemudian menekan tombol enkripsi

Alternate Flow Pengguna memilih menu Pengungkapan Pre Condition Pengguna telah membuka menu Pengamanan Post Condition Pengguna mendapatkan pesan tersandi

Tabel 3.2 Deskripsi Use Case Pengungkapan

Name Pengungkapan

Actors Pengguna

Description Proses memasukkan pesan tersandi dan kunci, kemudian

melakukan dekripsi dengan algoritma Vigenere dan Myszkowski, lalu menampilkan hasilnya

Basic Flow Pengguna memasukkan pesan tersandi dan kunci, kemudian menekan tombol dekripsi

Alternate Flow Pengguna memilih menu Pengamanan

Pre Condition Pengguna telah memilih menu Pengungkapan Post Condition Pengguna mendapatkan pesan asli

3.2.1.2. Activity diagram

Activity diagram merupakan penggambaran berbagai alir aktivitas dalam sistem yang sedang dirancang, bagaimana alir awal, decision yang mungkin terjadi dan berakhir. Diagram ini dapat dibagi menjadi beberapa object swimlane untuk menggambarkan objek mana yang bertanggung jawab untuk aktivitas tertentu (Dharwiyanti & Wahono, 2003).

Gambar 3.3 menunjukkan activity diagram untuk proses pengamanan. Proses dimulai dari pengguna memilih menu pengamanan dan sistem akan menampilkan halaman pengamanan. Kemudian pengguna memasukkan pesan asli (plaintext), kunci pertama (key1) dan kunci kedua (key2), lalu menekan tombol enkripsi. Sistem melakukan pengecekan inputan, bila cek gagal maka proses selesai dan bila cek sukses, sistem melakukan enkripsi plaintext menggunakan algoritma Vigenere cipher dengan key1 untuk menghasilkan pesan tersandi pertama (ciphertext1). Ciphertext1

20

Gambar 3.3 Activity Diagram Pengamanan

Gambar 3.4 menunjukkan activity diagram untuk proses pengungkapan. Proses dimulai dari pengguna memilih menu pengungkapan dan sistem menampilkan halaman pengungkapan. Kemudian pengguna memasukkan ciphertext2, key1 dan key2, lalu menekan tombol dekripsi. Sistem melakukan pengecekan inputan, bila cek gagal proses selesai dan bila cek sukses, sistem melakukan dekripsi ciphertext2 menggunakan algoritma Myszkowski transposition dengan key2 untuk menghasilkan ciphertext1. Ciphertext1 selanjutnya didekripsi menggunakan algoritma Vigenere cipher dengan key1 untuk menghasilkan plaintext, kemudian menampilkan hasilnya dan proses selesai.

Gambar 3.4 Activity Diagram Pengungkapan

3.2.1.3. Sequence diagram

Sequence diagram merupakan penggambaran skenario atau langkah-langkah yang dilakukan sebagai respons dari sebuah event untuk menghasilkan output tertentu. Sequence diagram terdiri dari waktu pada vertikal dan objek-objek yang terkait pada horizontal (Dharwiyanti & Wahono, 2003). Sequence diagram dari proses pengamanan dapat dilihat pada Gambar 3.5.

22

Gambar 3.5 Sequence Diagram Pengamanan

Pada Gambar 3.5 dapat dilihat bahwa pertama pengguna memasukkan plaintext, key1 dan key2 pada pengamanan. Kemudian plaintext dan key1 digunakan untuk dienkripsi menjadi ciphertext1. Ciphertext1 dienkripsi lagi menggunakan key2 untuk mendapatkan ciphertext2. Setelah itu, ciphertext2 ditampilkan kepada pengguna. Sequence diagram dari proses pengungkapan dapat dilihat pada Gambar 3.6.

Pada Gambar 3.6 dapat dilihat bahwa pertama pengguna memasukkan ciphertext2, key1 dan key2 pada pengungkapan. Kemudian ciphertext2 dan key2 digunakan untuk didekripsi menjadi ciphertext1. Ciphertext1 didekripsi lagi menggunakan key1 untuk mendapatkan plaintext kembali. Setelah itu, plaintext ditampilkan kepada pengguna.

3.2.2. Flowchart

Flowchart merupakan gambar atau bagan yang memperlihatkan urutan dan hubungan antar proses beserta pernyataannya. Gambaran ini dinyatakan dengan simbol dan garis penghubung. Flowchart berguna untuk memudahkan dalam melakukan pengecekan bagian-bagian dalam analisis masalah (Zarlis & Handrizal, 2008).

3.2.2.1. Flowchart sistem

Flowchart sistem yaitu bagan dengan simbol tertentu yang menggambarkan urutan prosedur dan proses suatu file dalam suatu media menjadi file di dalam media lain, dalam suatu sistem pengolahan data (Zarlis & Handrizal, 2008). Flowchart dari sistem yang akan dibangun dapat dilihat pada Gambar 3.7.

24

Gambar 3.7 Flowchart Sistem

Pada Gambar 3.7 sistem dimulai dengan menentukan pilihan halaman menu, yaitu menu pengamanan atau pengungkapan. Halaman pengamanan berfungsi untuk mengenkripsi pesan asli menjadi pesan tersandi. Halaman pengungkapan berfungsi untuk mendekripsikan pesan tersandi kembali menjadi pesan asli.

3.2.2.2. Flowchart program pengamanan

Flowchart program yaitu bagan dengan simbol-simbol tertentu yang menggambarkan urutan proses dan hubungan antar proses secara mendetail di dalam suatu program (Zarlis & Handrizal, 2008). Flowchart program pengamanan dapat dilihat pada Gambar 3.8.

Gambar 3.8 Flowchart Pengamanan 3.2.2.3. Flowchart program pengungkapan

26

Gambar 3.9 Flowchart Pengungkapan

3.2.3. Pseudocode

Pseudocode adalah kode yang mirip dengan kode pemrogaman yang sebenarnya seperti Pascal, atau C, sehingga lebih tepat digunakan untuk menggambarkan algoritma yang akan dikomunikasikan kepada pemrogram (Zarlis & Handrizal, 2008). Pseudocode pada penelitian ini dibagi menjadi empat yaitu enkripsi Vigenere,

3.2.3.1. Pseudocode enkripsi Vigenere

Pseudocode enkripsi Vigenere dapat dilihat pada Gambar 3.10.

Gambar 3.10 Pseudocode Enkripsi Vigenere 3.2.3.2. Pseudocode enkripsi Myszkowski

Pseudocode enkripsi Myszkowski dapat dilihat pada Gambar 3.11.

Kamus :

plaintext, key1, key, ciphertext1 : string pesan, i, j, k : integer

Algoritma :

Input (plaintext) Input (key1)

For (i=0; i<plaintext.length(); i++) j = i % key1.length()

key += key1.charAt(j) EndFor

For (i=0; i<plaintext.length(); i++) j = (int) plaintext.charAt(i) k = {int} key.charAt(i)

pesan = ((j-32) + (k-32)) % 95 pesan += 32

ciphertext += (char) pesan EndFor

28

Gambar 3.11 Pseudocode Enkripsi Myszkowski

3.2.3.3. Pseudocode dekripsi Myszkowski

Pseudocode dekripsi Myszkowski dapat dilihat pada Gambar 3.12.

Kamus :

ciphertext1, ciphertext2, key2 : string bar, kol, tmp, kecil, i, j, k : integer matrix[bar,kol] : array of char

Algoritma :

Input (ciphertext1) Input (key2)

tmp = 0

kol = key2.length()

bar = ceil(ciphertext1.length() / kol) For (i=0; i<bar i++)

For (j=0; j<kol; j++) If (tmp < ciphertext1.length()) matrix[i,j] = ciphertext1.charAt(tmp) tmp++ Else matrix[i][j] = null EndIf EndFor EndFor tmp = -1

While (ciphertext2.length() < ciphertext1.length()) For (i=0; i<kol; i++)

If (int.parse(key2.char(i)) > tmp) kecil = int.parse(key2.char(i)) break()

EndIf EndFor

For (i=0; i<kol; i++)

If (int.parse(key2.char(i)) > tmp & int.parse(key2.char(i) < kecil)

kecil = int.parse(key2.char(i)) EndIf

EndFor

For (i=0; i<bar; i++) For (j=0; j<kol; j++)

If (int.parse(key2.char(j)) == kecil & matrix[i][j] != null) ciphertext2 += matrix[i,j] EndIf EndFor EndFor tmp = kecil EndWhile return (ciphertext2)

Kamus :

ciphertext1, ciphertext2, key2 : string bar, kol, tmp, kecil, i, j, k : integer matrix[bar,kol] : array of char

Algoritma : Input (ciphertext2) Input (key2) k = 0 tmp = -1 kol = key2.length()

bar = ceil(ciphertext2.length() / kol) While (k < ciphertext2.length())

For (i=0; i<kol; i++)

If (int.parse(key2.char(i)) > tmp) kecil = int.parse(key2.char(i)) break()

EndIf EndFor

For (i=0; i<kol; i++)

If (int.parse(key2.char(i)) > tmp & int.parse(key2.char(i) < kecil)

kecil = int.parse(key2.char(i)) EndIf

EndFor

For (i=0; i<bar; i++) For (j=0; j<kol; j++)

If (int.parse(key2.char(j)) == kecil)

If (i==bar-1 & j>=kol-((kol*bar)-ciphertext2.length()) Else matrix[i,j] = ciphertext2.char(k) k++ EndIf EndIf EndFor EndFor tmp = kecil EndWhile

For (i=0; i<bar i++) For (j=0; j<kol; j++) If (ciphertext1.length() < ciphertext2.length()) ciphertext1 += matrix[i,j] EndIf EndFor EndFor return (ciphertext1)

Dokumen terkait