PERANCANGAN APLIKASI PENGAMANAN TEKS SMS DENGAN IMPLEMENTASI ALGORITMA BLOWFISH PADA MOBILE PHONE ANDROID
SKRIPSI
Oleh :
JEFRI LISTON SIAHAAN NIM. 0910000370
PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNIK DAN ILMU KOMPUTER UNIVERSITAS POTENSI UTAMA MEDAN 2015
SKRIPSI Diajukan untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Komputer
“ Sebuah Dedikasi Untuk Ayah Dan Ibu Tercinta ”
Ayah, Terbersit di ingatanku kau selalu mencoba memberikan yang terbaik untuk ku, Memberikan kehidupan yang layak untuk seorang anak, Memberikan pendidikan yang terbaik untuk ku, Memberikan kecukupan atas semua keluh kesahku, Walau panas terik menghadang, keringat dan peluh tak terbendung lagi, Kau selalu mencoba bertahan karena memikirkanku.
Ibu, Kaulah petunjuk jalan disetiap langkah hidupku. Kaulah sinar yang selalu menerangiku dalam kegelapan, Disaat ku menangis kau coba tuk berikan aku kekuatan, Disaat ku merasa pasrah, kau dorong aku tuk maju ke depan, Kau lah wanita mulia dalam hidupku.
Ya Tuhan, Apa saja gangguan yang telah mereka rasakan atau, Kesusahan yang mereka derita karena aku atau, Hilangnya sesuatu hak mereka karena perbuatanku, Maka jadikanlah itu semua penyebab susutnya dosa-dosa mereka dan, Bertambahnya pahala kebaikan mereka dengan campur tangan-Mu ya Allah, Hanya Engkaulah yang berhak membalas kejahatan dengan kebaikan yang berlipat ganda begitu juga sebaliknya.
“ Penulis Sangat Menyayangi-mu Ayah Dan Ibu Tercinta “
ABSTRACT With so many applications today help reduce the activities carried out by many people. One is sending SMS with Mobile Phone Andorid . SMS utilization in its use so allows each user to send or receive information quickly . SMS is a text message that has a predefined size , with a limit of 160 characters per SMS . With the use of SMS also depends on the provision of the service used by the cost has been determined by each operator . Security is also an important aspect to consider in the use of SMS . At adulthood , still often some irresponsible parties who do piercing SMS. To the importance of the application of safeguards in the SMS using Blowfish algorithm so as to guarantee the authenticity of SMS messages sent or received . Keywords : "Security SMS " , "Mobile Phone Android " , " Blowfish algorithm " .
ABSTRAK Dengan banyaknya aplikasi pada saat ini sangat membantu mengurangi aktifitas yang dilakukan oleh banyak orang. Salah satunya adalah pengiriman SMS dengan Mobile Phone Andorid. Pemanfaatan SMS dalam penggunaannya sangat memungkinkan setiap pengguna dalam mengirim atau menerima informasi dengan cepat. SMS merupakan pesan teks yang mempunyai ukuran yang sudah ditetapkan, dengan batasan 160 karakter per SMS. Dengan penggunaan SMS juga tergantung ketentuan dari operator yang digunakan dengan biaya yang telah ditetapkan oleh masing-masing operator. Pengamanan juga menjadi aspek penting yang perlu diperhatikan dalam penggunaan SMS. Pada masa dewasa ini, masih seringnya beberapa pihak yang tidak bertanggung jawab yang melakukan pembobolan SMS. Untuk itu pentingnya penerapan pengamanan pada SMS dengan menggunakan algoritma Blowfish sehingga menjamin keaslian SMS yang dikirim maupun yang diterima. Kata Kunci :”Pengamanan SMS”, “Mobile Phone Android”, “Algoritma Blowfish”
KATA PENGANTAR
Puji dan syukur penulis panjatkan kehadirat Tuhan Yang Maha Esa yang telah memberikan
kesehatan
dan
rahmat-Nya,
sehingga
penulis
dapat
menyelesaikan penyusunan skripsi ini dengan sebaik-baiknya. Penulisan skripsi ini disusun untuk melengkapi salah satu syarat dalam menyelesaikan Program Pendidikan Strata Satu ( S-1 ) Jurusan Teknik Informatika. Dalam penulisan dan penyusunan skripsi ini tidak terlepas dari bantuan, saran, serta dukungan secara moril maupun materil dari berbagai pihak. Oleh karena itu, dalam kesempatan ini dengan segala kerendahan hati, penulis mengucapkan terima kasih kepada : 1. Bapak Budi Triandi, M.Kom, selaku Dosen Pembimbing I serta selaku Ketua Program Studi Teknik Informatika yang telah menyediakan waktu, tenaga dan pikiran ditengah kesibukannya untuk memberikan bimbingan, petunjuk dalam menyelesaikan penulisan skripsi ini. 2. Bapak Helmi Kurniawan, ST, M.Kom, selaku Dosen Pembimbing II yang telah banyak memberikan bimbingan dan petunjuk serta meluangkan waktunya dalam menyelesaikan penulisan skripsi ini. 3. Ibu Hj. Nuriandy, BA, selaku Pembina Yayasan Potensi Utama Medan. 4. Bapak Bob Subhan Riza, ST, M.Kom, selaku Ketua Yayasan Potensi Utama Medan. 5. Ibu Rika Rosnelly, SH, M.Kom, selaku Rektor Universitas Potensi Utama Medan.
i
ii
DAFTAR ISI
KATA PENGANTAR …………………………………………………………... i DAFTAR ISI ………………………………………………………………...… iii DAFTAR GAMBAR ………………………………………………………….. vii DAFTAR TABEL ……………………………………………………………. viii DAFTAR LAMPIRAN ………………………………………………………... ix
BAB I
PENDAHULUAN …………………………………………………..... 1 I.1 Latar Belakang ……………………………………………………. 1 I.2 Ruang Lingkup Permasalahan Masalah ………………………..…. 2 I.2.1 Identifikasi Masalah ……..………………………………….. 2 I.2.2 Perumusan Masalah …….……..……………………………. 2 I.2.3 Batasan Masalah ……………..……………………………... 3 I.3 Tujuan dan Manfaat ………………………………………………. 3 I.3.1 Tujuan …………….………………………………………... 3 I.3.2 Manfaat …………….………………………………………. 4 I.4 Metodologi Penyelesaian ………………………………………..... 4 I.5 Keaslian Penelitian ……………..……………………….………... 6 I.6 Sistematika Penulisan…………………………...………………….7
BAB II
TINJAUAN PUSTAKA ………….……………………………….....9 II.1 Perancangan …………………………………………..…………. 9
iii
II.2 Aplikasi ……………...…………………..………………………. 9 II.3 Keamanan .....................................................................................10 II.4 SMS (Short Message Service)………….………………………..10 II.4.1 Kemanan SMS…………...…………….…………………10 II.4.2 Pengiriman SMS…………………...……………………..11 II.5 Kriptografi…………...…………………………………………..13 II.6 Terminologi Kriptografi……..……………………………...…...13 II.7 Kriptografi Kunci Simetri (Kriptografi Kunci-Privat)…………..14 II.8 Algoritma Blowfish………...……………………………….........15 II.8.1 Bagian-Bagian Algoritma Blowfish…………….......…….16 II.9 Java…………………...…………………………………………22 II.9.1 J2ME (Java 2 Micro Edition)……………….……...…….23 II.10 Sistem Operasi Android………...………………………….….25 II.10.1 Android………….…………...………………………..25 II.10.2 Android OS………………………………………....…26 II.10.3 Android SDK (Software Development Kit)………......26 II.10.4 AVD (Android Virtual Device)…………………..........27 II.11 UML (Unified Modelling Language)……...............................28
BAB III
ANALISIS DAN DESAIN SISTEM ……………...…………....... 35 III.1 Analisa Masalah ....................................................................... 35 III.2 Spefikasi Perangkat………...………………...………………..36 III.2.1 Teknik Pemecahan Masalah…………………..……....37
iv
III.2.2 Analisa Proses Penyelesaian……………...……..…….38 III.2.3 Ekspansi Kunci (Key-expansion)………………...……39 III.2.4 Enkripsi Data……………..………...……………….…41 III.3 Desain Sistem……………………………………………….....45 III.3.1 Use Case Diagram………………………………….….45 III.3.2 Activity Diagram…………………...………….………45 III.3.3 Sequence Diagram…………………...……………..…46 III.4 Desain Interface……………………………….………………50 1. Rancangan Splash………….…...…………………………..50 2. Rancangan Menu……………………………………………50 3. Rancangan New Sms………………………………………..52 4. Rancangan Read Sms……………………………...………..52 5. Rancangan Form About…………………………….………53 6. Rancangan Form Tentang Aplikasi………………….…..…54
BAB IV
HASIL DAN UJI COBA …………………………………………. 55 IV.1 Hasil ......................................................................................... 55 IV.1.1 Tampilan Menu Splash ................................................55 IV.1.2 Tampilan Menu Utama……………………………….56 IV.1.3 Tampilan Menu Pesan Baru…………………………..57 IV.1.4 Tampilan Menu Pesan Masuk………………………...57 IV.1.5 Pesan Masuk………………………………………….58 IV.1.6 Pembahasan…………………………………………...59
v
IV.2 Uji Coba Sistem ....................................................................... 60 IV.2.1 Sekenario ……………………….................................. 60 IV.3 Kelebihan Sistem Yang Dirancang……………………………61 IV.3.1 Kekurangan Sistem Yang Dirancang.............................62
BAB V
KESIMPULAN DAN SARAN ......................................................... 63 V.1 Kesimpulan .................................................................................. 63 V.2 Saran ............................................................................................ 64
DAFTAR PUSTAKA LAMPIRAN
vi
DAFTAR GAMBAR
Gambar II.1 Penyederhanaan Jaringan SMS Dan Aliran SMS........................... 12 Gambar II.2 Diagram Algoritma Enkripsi Blowfish ........................................... 19 Gambar II.3 Fungsi F dalam Blowfish…………………………………………..20 Gambar II.4 Blok Diagram Dekripsi Blowfish ................................................... 21 Gambar II.5 Tampilan AVD…………………………………………………….27 Gambar II.6 Use Case Diagram…………………………………………………30 Gambar II.7 Class Diagram …………………………………………………….31 Gambar II.8 Contoh Squence Diagram ............................................................... 32 Gambar II.9 Activity Diagram …………………………………………………….…34 Gambar III.1 Blok Diagram Algoritma Enkripsi Blowfish ................................. 42 Gambar III.2 Fungsi F Dalam Blowfish ………...…………………………….. 43 Gambar III.3 Blok Diagram Dekripsi Blowfish .................................................. 44 Gambar III.4 Use Case Diagram......................................................................... 45 Gambar III.5 Activity Diagram Android………………………………………...46 Gambar III.6 Sequence Diagram Start Aplikasi...................................................47 Gambar III.7 Sequence Diagram Menampilkan Menu SMS.................................47 Gambar III.8 Sequence Diagram Mengirim Pesan...............................................48 Gambar III.9 Sequence Diagram Pesan Masuk.....................................................48 Gambar III.10 Sequence Diagram Pesan Terkirim...............................................49 Gambar III.11 Sequence Diagram Pesan Tersimpan............................................49 Gambar III.12 Rancangan Form Splash................................................................50
vii
Gambar III.13 Rancangan Menu...........................................................................51 Gambar III.14 Rancangan New Sms......................................................................52 Gambar III.15 Rancangan Papan Permainan........................................................53 Gambar III.16 Rancangan Form About Program.................................................54 Gambar III.17 Rancangan Form Help..................................................................54 Gambar IV.1
Tampilan Menu Splash.................................................................55
Gambar IV.2
Tampilan Menu Utama.................................................................56
Gambar IV. 3 Tampilan Menu Pesan Baru..........................................................57 Gambar IV.4
Tampilan Menu Pesan Masuk.......................................................58
Gambar IV.5
Tampilan Menu Pesan Masuk.......................................................59
viii
DAFTAR TABEL
Tabel I.1
Keaslian Penelitian..............................................................................6
Tabel IV.1 Hasil Pengujian Black Box Testing....................................................60
ix
DAFTAR LAMPIRAN
Lampiran-1
Listing Program
Lampiran-2
Surat Pengajuan Judul Skripsi
Lampiran-3
Formulir Pendaftaran Judul Skripsi
Lampiran-4
Surat Pernyataan Kesediaan Pembimbing I
Lampiran-5
Surat Pernyataan Kesediaan Pembimbing II
Lampiran-6
Jadwal Bimbingan Skripsi
Lampiran-7
Formulir Pendaftaran Seminar Hasil Skripsi
Lampiran-8
Berita Acara Seminar Hasil
Lampiran-9
Formulir Pendaftaran Sidang Skripsi
x
BAB I PENDAHULUAN
BAB I PENDAHULUAN I.1.
Latar Belakang
Saat ini perkembangan teknologi informasi dan komunikasi dari waktu ke waktu kian meningkat. Kebutuhan manusia akan perangkat informasi dan komunikasi seakan menjadi kebutuhan yang tidak terpisahkan dalam kehidupan. Dengan banyaknya aplikasi pada saat ini sangat membantu mengurangi aktifitas yang dilakukan oleh banyak orang. Salah satunya adalah pengiriman SMS dengan Mobile Phone Andorid. Pemanfaatan SMS dalam penggunaannya sangat memungkinkan setiap pengguna dalam mengirim atau menerima informasi dengan cepat. SMS merupakan pesan teks yang mempunyai ukuran yang sudah ditetapkan, dengan batasan 160 karakter per SMS. Dengan penggunaan SMS juga tergantung ketentuan dari operator yang digunakan dengan biaya yang telah ditetapkan oleh masing-masing operator. Pengamanan juga menjadi aspek penting yang perlu diperhatikan dalam penggunaan SMS. Pada masa dewasa ini, masih seringnya beberapa pihak yang tidak bertanggung jawab yang melakukan pembobolan SMS. Untuk itu pentingnya penerapan pengamanan pada SMS sehingga menjamin keaslian SMS yang dikirim maupun yang diterima. Dengan latar belakang yang telah tertera, dalam perancangan dan penulisan skripsi ini, penulis berinisiatif memberikan judul “Perancangan Aplikasi Pengamanan Teks Sms Dengan Implementasi Algoritma Blowfish Pada Mobile Phone Android”.
1
2
I.2.
Ruang Lingkup Permasalahan Masalah
I.2.1.
Identifikasi Masalah
Adapun identifikasi masalah yang penulis rangkum pada penelitian dan perancangan adalah : 1. Masih seringnya pembobolan pada SMS yang dilakukan oleh sebagian pihak yang tidak bertanggungjawab. 2. Masih kurangnya suatu aplikasi pengamanan SMS pada Mobile Phone Android. 3. Masih kurangnya pengembangan pengamanan SMS pada perangkat android dengan penerapan algoritma Blowfish.
I.2.2. Perumusan Masalah Berdasarkan identifikasi masalah yang ada, maka akan dibahas rumusan masalah sebagi berikut: 1. Bagaimana merancang sebuah aplikasi pengamanan SMS pada Mobile Phone Android? 2. Bagaimana mengimplementasikan algoritma Blowfish pada pengamanan SMS? 3. Bagaimana membangun sebuah aplikasi pengamanan SMS yang dapat dengan mudah digunakan oleh pihak umum?
3
I.2.3. Batasan Masalah Adapun batasan masalah yang ada dalam perancangan ini meliput : 1. Pada perancangan pengamanan SMS membatasi hanya pesan teks pada perangkat Android. 2. Pengembangan dan perancangan menggunakan algoritma Blowfish untuk pengamanan pesan teks. 3. Perancangan
menggunakan
pemrograman
Java,
sebagai
bahasa
pemrogramanan, Netbeans sebagai alat bantu pengkodean dan Eclipse sebagai editor pemrograman.
I.3.
Tujuan Dan Manfaat
I.3.1. Tujuan Adapun tujuan dari perancangan apliaksi pengamanan SMS dengan metode Blowfish ini adalah : 1. Untuk membangun sebuah aplikasi pengamanan SMS pada perangkat Mobile Phone Android. 2. Untuk
menghindari kecurangan yang dilakukan oleh sebagian pihak dalam
penggunaan SMS pada perangkat Android. 3. Untuk mengukur kekuatan pengkodean SMS dengan penerapan algoritma Blowfish.
4
I.3.2. Manfaat Adapun manfaat dari penulisan skripsi ini adalah: 1. Memberikan suatu aplikasi pengkodean dalam pesan teks pada mobile phone android bagi pihak umum. 2. Menambah wawasan penulis tentang pengamanan SMS pada perangkat Android. 3. Diharapkan manjadi sumber referensi bagi pengembang yang berminat dikemudian hari.
I.4.
Metodologi Penyelesain Adapun teknik-teknik pengumpulan data yang dilakukan penulisan adalah
sebagai berikaut : 1. Penelitian ini bersifat teoritis dengan cara memperoleh informasi dalam buku bacaan, jurnal, artikel yang berhubungan dengan masalah yang akan dibahas yang berasal dari akedemik ataupun dari luar akedemik, terutama yang berkaitan dengan prosedur, implementasi bahasa pemrograman Java dalam perancangan pengamanan SMS. 2. Analisa Permasalahan. Tahapan ini berupa proses pembelajaran lebih lanjut mengenai permasalahan yang ada menggunakan analisa sebab akibat sebagai dasar penentuan analisa kebutuhan. 3. Analisa Kebutuhan Pada tahapan ini dilakukan analisa sehingga dapat didefinisikan kebutuhankebutuhan sistem meliputi input, output, operasi, dan resources sehingga dapat terbentuk suatu sistem baru yang lebih handal. 4. Analisa Keputusan
5
Tahapan ini bertujuan untuk menentukan solusi yang paling layak di dalam memecahkan permasalahan yang ada. Dalam hal ini berkaitan dengan perangkat keras dan perangkat lunak yang akan digunakan dalam perancangan. 5. Desain Sistem Tahapan ini meliputi desain model, desain basis data, desain masukan dan keluaran, serta desain dan algoritma pengguna. 6. Pembuatan Sistem
Berdasarkan desain yang telah dibuat pada tahap sebelumnya dilakukan proses pembuatan sistem menggunakan perangkat yang telah ditentukan pada tahapan analisa keputusan. 7. Implementasi Sistem Tahapan ini tidak akan dikerjakan seluruhnya, hanya tahap pengujian program hal ini disebabkan oleh keterbatasan waktu.
6
I.5. Keaslian Penelitian Adapun keaslian dalam penelitian dapat dilihat pada tabel I.1 sebagai berikut : Tabel I.1. Keaslian Penelitian
No Peneliti Judul Tri Studi Dan 1 Andriyanto, Perbandingan D. L. Algoritma Idea Crispina Dan Algoritma Pardede Blowfish. 2008
2
Rohmat Nur Kriptografi Ibrahim Algoritma (2012) DES, AES/Rijndael, Blowfish untuk keamanan citra digital dengan Menggunakan metode discrete wavelet Transformation (DWT)
3
Suriski Sitinjak (2010)
Aplikasi Kriptografi file Menggunakan Algoritma Blowfish
Hasil
Perbedaan
Algoritma IDEA dan Blowfish beroperasi pada panjang blok yang sama, yaitu 64 bit. Dan pada aplikasi ini dapat mengenkripsi berbagai bentuk file dokumen dan baik file gambar maupun file audio. Sistem yang dibangun untuk pengamanan citra digital menggunakan kriptografi Algoritma Des, Blowfish dan Rijndael dapat mengenkripsi dan mendekripsi citra digital, terbukti menghasilkan beberapa karakteristik dari mulai kecepatan proses, MSE, NPCR dan PSNR (dB). Aplikasi ini juga telah berhasil mengembalikan file yang telah diacak tersebut (cipherteks) seperti semula dengan menggunakan kunci yang sama sewaktu enkripsi.
Pada aplikasi ini hanya menggunakan algoritma blowfish serta hanya dapat mengenkripsi teks yang ada pada sms. Sangat jelas terlihat sistem yang dibangun untuk merupakan pengamanan teks sms dan dapat mengenkripsi dan mendekripsi teks sms. Perebedaan yang terdapat terlihat pada pengamanan yang dapat dilakukan. Pada aplikasi hanya dapat melakukan pengamanan pada teks sms namun juga dalam pengembalian
7
pesan teks ke bentuk semula juga menggunakan kunci key yang sama saat proses enkripsi dilakukan.
I.6.
Sistematika Penulisan
Susunan dan sistematika penulisan skripsi ini terdiri dari beberapa sub bab dapat dilihat sebagai berikut. BAB I
: PENDAHULUAN Pada bab ini secara ringkas diterangkan mengenai latar belakang, identifikasi masalah, batasan masalah, tujuan penelitian dan manfaat penelitian, metodologi penyelesaian masalah, serta sistematika penulisan.
BAB II : TINJAUAN PUSTAKA Sub bab ini tentang teori yang berkaitan dengan pembuatan, desain dan tampilan rancangan aplikasi pengamanan SMS. BAB III : ANALISA DAN PERANCANGAN PROGRAM Berisi tentang analisa dan perancangan aplikasi, yang meliputi analisa masalah, perancangan interface, perangkat yang digunakan, metode serta ketentuan algoritma penggunaan.
8
BAB IV : HASIL DAN PEMBAHASAN Berisi
tentang
tampilan
hasil
impelentasi
program,
beserta
pembahasannya, serta kelebihan dan kekurangan sistem yang dirancang. BAB V
: KESIMPULAN DAN SARAN Dalam bab ini diuraikan kesimpulan dan saran yang dapat diberikan untuk pengembangan aplikasi yang dirancang.
BAB II TINJAUAN PUSTAKA
BAB II TINJAUAN PUSTAKA II.1.
Perancangan Perancangan mempunyai 2 maksud, yaitu untuk memenuhi kebutuhan
kepada pemakai sistem dan untuk memberikan gambaran yang jelas kepada pemogram komputer dan ahli-ahli teknik lainnya yang terlibat. (Hanik Mujiati ; 2014 : 2)
II.2.
Aplikasi Aplikasi adalah suatu sub kelas perangkat lunak komputer yang
memanfaatkan kemampuan komputer langsung untuk melakukan suatu tugas yagn diinginkan pengguna. Contoh utama aplikasi adalah pengolah kata, lembar kerja, memanipulasi foto, merancang rumah dan pemutar media. Beberapa aplikasi yang digabung bersama menjadi sutau pake disebut sebagai suatu paket atau suite aplikasi
(application
suite).
Contohnya
adalah
Microsoft
Office
dan
OpenOffice.org, yang menggabungkan suatu aplikasi pengolah kata, lembar kerja dan beberapa aplikasi lainnya. Aplikasi-aplikasi dalam suatu paket biasanya memiliki atarmuka pengguna yang memiliki kesamaan sehingga memudahkan pengguna untuk mempelajari dan menggunakan tiap aplikasi. Sering kali, mereka memiliki kemampuan untuk saling berinteraksi satu sama lain sehingga menguntungkan pengguna. Contohnya, suatu lembar kerja dapat dibenamkan dalam suatu dokumen pengolah kata walaupun dibuat pada aplikasi lembar kerja yang terpisah. (Dahlan Abdullah ; 2013 : 152)
9
10
II.3.
Keamanan Masalah keamanan merupakan salah satu aspek penting dari sebuah sistem
Sayang sekali masalah keamanan ini sering kali kurang mendapat perhatian dari para pemilik dan pengelola sistem informasi. Seringkali masalah keamanan berada di urutan kedua, atau bahkan di urutan terakhir dalam daftar hal-hal yang dianggap penting. Apabila menggangu performansi dari sistem, seringkali keamanan dikurangi atau ditiadakan (Dowd & McHenry, 1998: 24-28) yang dikutip oleh Rahardjo. Keamanan itu tidak dapat muncul demikian saja. Dia harus direncanakan. Ambil contoh berikut. Jika kita membangun sebuah rumah, maka pintu rumah kita harus dilengkapi dengan kunci pintu. Jika kita terlupa memasukkan kunci pintu pada budget perencanaan rumah, maka kita akan dikagetkan bahwa ternyata harus keluar dana untuk menjaga keamanan. (Ilham Alamsyah ; 2013 :2)
II.4.
SMS (Short Message Service) Pertukaran pesan melalui Short Message Service (SMS) merupakan suatu
layanan yang popular dikalangan pemakai telepon bergerak di Indonesia. Pengiriman SMS dari satu perangkat ke perangkat lainnya melalui SMS Center untuk menyimpan dan menyampaikan SMS ke perangkat tujuan. (Hendra ; 2012 : 1)
II.4.1. Keamanan SMS GSM menyediakan mekanisme keamanan untuk memastikan kerahasiaan dan integritas dari layanan, mekanisme ini ditempatkan antara perangkat bergerak
10
11
dengan jaringan operator dengan menggunakan algoritma A5, tetapi berdasarkan percobaan serangan kriptanalisis secara realtime terhadap keluaran algoritma A5/1 selama percakapan dua menit, kunci rahasia dapat dipecahkan dalam waktu satu detik, dan pada serangan kedua membutuhkan output dari algoritma A5/1 selama dua detik dari percakapan, dan kunci rahasia berhasil dipecahkan dalam waktu beberapa menit. (Hendra ; 2012 : 2)
II.4.2. Pengiriman SMS Ada dua metode untuk mengirim sebuah pesan text ke suatu perangkat bergerak, yaitu melalui suatu perangkat bergerak ataupun melalui suatu External Messaging Entities (ESMEs). ESMEs terdiri dari sejumlah besar perangkat berbeda dan memiliki berbagai antarmuka seperti email, portal messaging berbasis web yang terkoneksi pada jaringan telepon bergerak melalui internet maupun kanal dedicated tertentu. Pesan awalnya dikirim ke suatu server yang menangani trafik SMS yang dikenal sebagai Short Messaging Service Center (SMSC). Suatu provider yang mendukung pesan text harus memiliki paling sedikit satu SMSC pada jaringan mereka. SMSC perlu untuk menentukan bagaimana pesan disampaikan ke perangkat target. SMSC menanyakan kepada suatu basis data Home Location Register (HLR) yang menyimpan data pemakai dan informasi lokasi. Melalui interaksi dengan elemen lainnya, HRL menentukan routing informasi ke tujuan. Jika SMSC menerima balasan bahwa target tidak dapat dicapai, maka pesan akan disimpan untuk dikirim nantinya, jika sebaliknya maka akan dibalas dengan alamat Mobile Switching Center (MSC) yang tersedia untuk melayani. Ketika suatu pesan tiba dari SMSC ke MSC, MSC menanyakan
11
12
kepada suatu basis data Visitor Location Register (VLR) yang akan mengembalikan suatu duplikat informasi dari perangkat target ketika dia tidak berada pada HLR-nya. MSC kemudian mengirim pesan kepada Base Station (BS) untuk disampaikan ke target. (Hendra ; 2012 : 2) Proses pengiriman SMS ditunjukan oleh Gambar 1(a) dan 1(b) berikut :
(a). Jaringan SMS
(b). Aliran SMS
Gambar II.1. Penyederhanaan Jaringan SMS dan Aliran SMS Sumber : Hendra : 2012 : 2
12
13
II.5.
Kriptografi Kriptografi berasal dari bahasa Yunani yaitu cryptós yang artinya “secret”
(yang tersembunyi) dan gráphein yang artinya “writting” (tulisan). Jadi, kriptografi berarti ”secret writting” (tulisan rahasia). Definisi yang dikemukakan oleh Bruce Schneier (1996), kriptografi adalah ilmu dan seni untuk menjaga keamanan pesan (Cryptography is the art and science of keeping messages secure). (Suriski Sitinjak ; 2010 : C-78)
II.6.
Terminologi Kriptografi Ada beberapa istilah-istilah yang penting dalam kriptografi, yaitu :
1. Pesan (Plaintext dan Ciphertext) : Pesan (message) adalah data atau informasi yang dapat dibaca dan dimengerti maknanya. Pesan asli disebut plainteks (plaintext) atau teks-jelas (cleartext). Sedangkan pesan yang sudah disandikan disebut cipherteks (chipertext) 2. Pengirim dan Penerima : Komunikasi data melibatkan pertukaran pesan antara dua entitas. Pengirim (sender) adalah entitas yang mengirim pesan kepada entitas lainnya. Penerima (receiver) adalah entitas yang menerima pesan. 3. Penyadap (eavesdropper) adalah orang yang mencoba menangkap pesan selama ditransmisikan. 4. Kriptanalisis dan Kriptologi : Kriptanalisis (cryptanalysis) adalah ilmu dan seni untuk memecahkan chiperteks menjadi plainteks tanpa mengetahui kunci yang digunakan. Pelakunya disebut kriptanalis. Kriptologi (cryptology) adalah studi mengenai kriptografi dan kriptanalisis.
13
14
5. Enkripsi dan Dekripsi : Proses menyandikan plainteks menjadi cipherteks disebut
enkripsi
(encryption)
atau
enciphering.
Sedangkan
proses
mengembalikan cipherteks menjadi plainteks semula dinamakan dekripsi (decryption) atau deciphering. 6. Cipher dan Kunci : Algoritma kriptografi disebut juga cipher yaitu aturan untuk enchipering dan dechipering, atau fungsi matematika yang digunakan untuk enkripsi dan dekripsi. Kunci (key) adalah parameter yang digunakan untuk transformasi enciphering dan dechipering. Kunci biasanya berupa string atau deretan bilangan. (Suriski Sitinjak ; 2010 : C-79)
II.7.
Kriptografi Kunci Simetri (Kriptografi Kunci-Privat) Pada sistem kriptografi kunci-simetri, kunci untuk enkripsi sama dengan
kunci untuk dekripsi, oleh karena itulah dinamakan kriptografi simetri. Keamanan sistem kriptografi simetri terletak pada kerahasiaan kuncinya. Ada banyak algoritma kriptografi modern yang termasuk ke dalam sistem kriptografi simetri, diantaranya adalah DES (Data Encryption Standard), Blowfish, Twofish, TripleDES, IDEA, Serpent, AES (Advanced Encryption Standard). (Suriski Sitinjak ; 2010 : C-79) Algoritma kriptografi (cipher) simetri dapat dikelompokkan menjadi dua kategori, yaitu (Suriski Sitinjak ; 2010 : C-79) : 1. Cipher aliran (stream cipher) Algoritma kriptografi beroperasi pada plainteks/cipherteks dalam bentuk bit tunggal, yang dalam hal ini rangkaian bit dienkripsikan/didekripsikan bit per bit.
14
15
2. Cipher blok (block cipher) Algoritma kriptografi beroperasi pada plainteks/cipherteks dalam bentuk blok bit, yang dalam hal ini rangkaian bit dibagi menjadi blok-blok bit yang panjangnya sudah ditentukan sebelumnya. (Suriski Sitinjak ; 2010 : C-79)
II.8.
Algoritma Blowfish Blowfish diciptakan oleh seorang Cryptanalyst bernama Bruce Schneier,
Presiden perusahaan Counterpane Internet Security, Inc (Perusahaan konsultan tentang kriptografi dan keamanan komputer) dan dipublikasikan tahun 1994. Dibuat untuk digunakan pada komputer yang mempunyai microposesor besar (32bit keatas dengan cache data yang besar). Blowfish merupakan algoritma yang tidak dipatenkan dan licensefree, dan tersedia secara gratis untuk berbagai macam kegunaan. (Suriski Sitinjak ; 2010 : C-79) Pada saat Blowfish dirancang, diharapkan mempunyai kriteria perancangan sebagai berikut (Suriski Sitinjak ; 2010 : C-79) : 1. Cepat, Blowfish melakukan enkripsi data pada microprocessors 32-bit dengan rate 26 clock cycles per byte. b. Compact (ringan), Blowfish dapat dijalankan pada memori kurang dari 5K. c. Sederhana,
Blowfish
hanya
menggunakan
operasi-operasi
sederhana:
penambahan, XOR, dan lookup tabel pada operan 32-bit. d. Memiliki tingkat keamanan yang bervariasi, panjang kunci yang digunakan oleh Blowfish dapat bervariasi dan bisa sampai sepanjang 448 bit. Dalam penerapannya sering kali algortima ini menjadi tidak optimal. Karena strategi implementasi yang tidak tepat. Algoritma Blowfish akan lebih
15
16
optimal jika digunakan untuk aplikasi yang tidak sering berganti kunci, seperti jaringan komunikasi atau enkripsi file otomatis. Selain itu, karena algoritma ini membutuhkan memori yang besar, maka algoritma ini tidak dapat diterapkan untuk aplikasi yang memiliki memori kecil seperti smart card. Panjang kunci yang digunakan, juga mempengaruhi keamanan penerapan algoritma ini. (Suriski Sitinjak ; 2010 : C-79)
II.8.1. Bagian-Bagian Algoritma Blowfish Algoritma Blowfish terdiri atas dua bagian, yaitu ekspansi kunci dan enkripsi data menurut (Suriski Sitinjak ; 2010 : C-79) berikut :
1. Ekspansi kunci (Key-expansion) Berfungsi merubah kunci (minimum 32-bit, maksimum 448-bit) menjadi beberapa array subkunci (subkey) dengan total 4168 byte (18x32-bit untuk Parray dan 4x256x32-bit untuk S-box sehingga totalnya 33344 bit atau 4168 byte). Kunci disimpan dalam K-array: K1, K2, ... Kj 1 _ j _ 14 Kunci-kunci ini yang dibangkitkan (generate) dengan menggunakan subkunci yang harus dihitung terlebih dahulu sebelum enkripsi atau dekripsi data. Sub-sub kunci yang digunakan terdiri dari : P-array yang terdiri dari 18 buah 32-bit subkunci : P1, P2, ..., P18 S-box yang terdiri dari 4 buah 32-bit, masing-masing memiliki 256 entri : S1,0, S1,1, ..., S1,255
16
17
S2,0, S2,1, ..., S2,255 S3,0, S3,1, ..., S3,255 S4,0, S4,1, ..., S4,255 Langkah-langkah perhitungan atau pembangkitan subkunci tersebut adalah sebagai berikut: a. Inisialisasi P-array yang pertama dan juga empat S-box, berututan, dengan string yang telah pasti. String tersebut terdiri dari digit-digit heksadesimal dari phi, tidak termasuk angka tiga di awal. Contoh : P1= 0x243f6a88 P2= 0x85a308d3 P3= 0x13198a2e P4= 0x03707344 dan seterusnya sampai S-box yang terakhir (daftar heksadesimal digit dari phi untuk P-array dan Sbox bisa lihat Lampiran). b. XOR-kan P1 dengan 32-bit awal kunci, XOR-kan P2 dengan 32-bit berikutnya dari kunci, dan seterusnya untuk semua bit kunci. Ulangi siklus seluruh bit kunci secara berurutan sampai seluruh P-array ter-XOR-kan dengan bit-bit kunci. Atau jika disimbolkan : P1 = P1 _ K1, P2 = P2 _ K2, P3 = P3 _ K3, . . . P14 = P14 _ K14, P15 = P15 _ K1, . . . P18 = P18 _ K4. Keterangan : _ adalah simbol untuk XOR.
17
18
c. Enkripsikan string yang seluruhnya nol (all-zero string) dengan algoritma Blowfish, menggunakan subkunci yang telah dideskripsikan pada langkah 1 dan 2. d. Gantikan P1 dan P2 dengan keluaran dari langkah 3. e. Enkripsikan keluaran langkah 3 menggunakan algoritma Blowfish dengan subkunci yang telah dimodifikasi. f. Gantikan P3 dan P4 dengan keluaran dari langkah 5. g. Lanjutkan langkah-langkah di atas, gantikan seluruh elemen P-array dan kemudian keempat S-box secara berurutan, dengan hasil keluaran algoritma Blowfish yang terus-menerus berubah. Total keseluruhan, terdapat 521 iterasi untuk menghasilkan subkuncisubkunci dan membutuhkan memori sebesar 4KB.
2. Enkripsi Data Terdiri dari iterasi fungsi sederhana (Feistel Network) sebanyak 16 kali putaran (iterasi), masukannya adalah 64-bit elemen data X. Setiap putaran terdiri dari permutasi kunci-dependent dan substitusi kunci- dan data dependent. Semua operasi adalah penambahan (addition) dan XOR pada variabel 32-bit. Operasi tambahan lainnya hanyalah empat penelusuran tabel array berindeks untuk setiap putaran. (Suriski Sitinjak ; 2010 : C-80) Langkahnya adalah seperti berikut. a. Bagi X menjadi dua bagian yang masing-masing terdiri dari 32-bit: XL, XR. b. Lakukan langkah berikut For i = 1 to 16: XL = XL _ Pi
18
19
XR = F(XL) _ XR Tukar XL dan XR c. Setelah iterasi ke-16, tukar XL dan XR lagi untuk melakukan membatalkan pertukaran terakhir. d. Lalu lakukan XR = XR _ P17 XL = XL _ P18 e. Terakhir, gabungkan kembali XL dan XR untuk mendapatkan cipherteks. Untuk lebih jelasnya, gambaran tahapan pada jaringan feistel yang digunakan Blowfish adalah seperti pada Gambar II.2.
Gambar II.2. Diagram Algoritma Enkripsi Blowfish Sumber : Suriski Sitinjak ; 2010 : C-81
19
20
Pada langkah kedua, telah dituliskan mengenai penggunaan fungsi F. Fungsi F adalah: bagi XL menjadi empat bagian 8-bit: a,b,c dan d. F(XL) = ((S1,a + S2,b mod 232) XOR S3,c) + S4,d mod 232 .................................................(2.1) Agar dapat lebih memahami fungsi F, tahapannya dapat dilihat pada Gambar II.3.
Gambar II.3. Fungsi F dalam Blowfish Sumber : Suriski Sitinjak ; 2010 : C-81 Dekripsi sama persis dengan enkripsi, kecuali bahwa P1, P2,…, P18 digunakan pada urutan yang berbalik (reverse). Algoritmanya dapat dinyatakan sebagai berikut : for i = 1 to 16 do XRi = XLi-1 _ P19-i; XLi = F[XRi] _ XRi-1;
20
21
XL17 = XR16 _ P1; XR17 = XL16 _ P2; Blok diagram dekripsi seperti pada Gambar II.4 berikut :
Gambar II.4. Blok Diagram Dekripsi Blowfish Sumber : Suriski Sitinjak ; 2010 : C-82
21
22
II.9.
Java Java adalah nama untuk sekumpulan teknologi untuk membuat dan
menjalankan perangkat lunak pada komputer standalone ataupun pada lingkungan jaringan Java 2 adalah generasi kedua dari Java platform (generasi awalnya adalah JDK atau Java Development Kit). Java inilah yang berdiri diatas mesin interpreter yang diberi nama Java Virtual Machine(JVM). JVM inilah yang akan membaca bytecode dalam file .class dari suatu program sebagai representasi langsung program yang berisi bahasa mesin”. Oleh karena itu bahasa java disebut juga sebagai bahasa pemrograman yang portable karena dapat dijalankan sebagai sistem operasi, asalkan pada sistem operasi tersebut terdapat JVM. (Utomo Budiyanto ; 2011 : 27) Sun Microsystems telah mendefinisikan tiga platform java menurut Utomo Budiyanto 2011 yang masing – masing diarahkan untuk tujuan tertentu dan untuk lingkungan komputasi yang berbeda-beda: 1. Java Standard Edition (J2SE), adalah inti dari bahasa pemrograman java. JDK adalah salah satu tool dari J2SE untuk mengkompilasi program java pada JRE. 2. Java Enterprise Edition (J2EE), dengan built-in mendukung untuk servlets, JSP, dan XML, edisi ini ditujukan untuk aplikasi berbasis server. 3. Java Micro Edition (J2ME), didesain untuk meletakkan perangkat lunak java pada barang elektronik beserta perangkat pendukungnya. Teknologi Java mencangkup 2 elemen penting yaitu bahasa pemrograman (programming language) dan lingkungan aplikasi (application environment). Java sebagai bahasa pemrograman dapat diartikan bahwa java sebanding dengan
22
23
bahasa pemrograman seperti C++, Pascal, Visual Basic, dan lainya, sedangkan Java sebagai lingkungan aplikasi berarti bahwa java dapat berjalan pada berbagai lingkungan seperti browser(Applets), server(servlets dan JSP) dan pada mobile device(midlet dan WAP). Java dalam hal ini mengungguli bahasa lainnya yang pernah ada jika dilihat dari sisi teknologi mobile. Hal ini dibuktikan dengan banyaknya jenis telepon genggam yang menggunakan java sebagai fitur utamanya. Microsoft.NET mobile pun kelihatannya belum dapat menyaingi keunggulan Java dalam bidang aplikasi mobile. Perlu diketahui bahwa Microsoft hanya mengandalkan solusi WAP yang mengembangkan ASP.NET untuk kebutuhan mobile device, sedangkan Java memiliki 2 solusi yaitu WAP dan MIDP (Mobile Information Device Profile). Solusi pertama adalah dengan mengandalkan J2EE (Java 2 Enterprise Edition) dengan produknya yang bernama JSP (Java Server Pages) dan Java Servlets. JSP dan Servlets ini digunakan untuk membentuk halaman WAP. Solusi kedua dengan menggunakan J2ME(Java 2 Micro Edition) MIDP dengan produknya yang bernama Midlets. Midlets inilah yang menjadi fitur andalan oleh beberapa jenis telepon genggam terbaru. (Utomo Budiyanto ; 2011 : 27)
II.9.1. J2ME (Java 2 Micro Edition) Java Micro Editon atau yang biasa disebut J2ME adalah bagian dari J2SE, karena itu banyak pustaka yang ada pada J2SE dapat digunakan pada J2ME. Tetapi J2ME mempunyai beberapa pustaka khusus yang tidak dimiliki J2SE. Kelahiran platform J2ME timbul karena dibutuhkan adanya sebuah platform komputasi yang mengakomodasi piranti komputer elektronik dan embedded.
23
24
Piranti ini dikelompokkan menjadi dua kategori, menurut Utomo Budiyanto ; 2011 : 27 yaitu : 1. Personal, piranti mobile yang dapat digunakan untuk komunikasi melalui jaringan tertentu misalkan ponsel, Personal Digital Assistant (PDA), Palm, Pocket PC dan organizer. 2. Piranti informasi yang digunakan bersama dengan jaringan tetap, koneksi jaringan yang tidak putus-putus misalnya TV, internet dan sistem navigasi. Kategori pertama mengarahkan piranti untuk tujuan khusus atau fungsifungsi tertentu yang terbatas dan tidak digunakan untuk mesin komputasi yang serba guna. Kategori kedua diarahkan untuk piranti yang mempunyai kapabilitas yang lebih besar dengan fasilitas user interface yang lebih baik, kemampuan komputasi yang lebih besar. (Utomo Budiyanto ; 2011 : 27)
1. Keunggulan J2ME Salah satu kelebihan Java yang paling signifikan adalah run everywhere. Dengan kelebihan ini, para pengembang yang sudah terbiasa mengembangkan aplikasi dalam bingkai kerja J2ME dan J2EE akan mampu bermigrasi dengan mudah untuk mengembangkan aplikasi J2ME. Selain itu, Java juga merupakan platform yang memiliki banyak keunggulan lain, keunggulan Java secara umum adalah : a. Multiplatform, aplikasi J2ME bisa berjalan diatas banyak platform yang didalamnya terdapat JVM. Beberapa platform yang tersedia didalamnya terdapat JVM antara lain Windows CR, Symbian, Embedded Linux dan sebagainya.
24
25
b. Robust, kode-kode Java adalah kode-kode robust, karena virtual machine mengatur keamanan proses eksekusi aplikasi. Java virtual machine menyediakan garbage collector yang berfungsi mencegah kebocoran memory. c. Terintegrasi dengan baik, J2ME bisa terhubung dengan back-end J2EE server dan web services dengan mudah karena menyediakan pustaka-pustaka API RMI dan web services. d. Berorientasi obyek, Java merupakan salah satu bahasa pemrograman yang murni berorientasi obyek. Hal ini mempermudah dan mempercepat pengembangan sistem yang dikembangkan dengan metode analisa dan desain berorientasi obyek. (Utomo Budiyanto ; 2011 : 27)
II.10. Sistem Operasi Android II.10.1. Android Android adalah sistem operasi untuk telepon seluler yang berbasis Linux, yang mencakup sistem operasi, middleware dan aplikasi. Android tidak terikat ke satu merek telepon seluler. Android menyediakan platform terbuka bagi para pengembang untuk menciptakan aplikasi mereka sendiri hingga dapat digunakan oleh berbagai peranti mobile. Beberapa fitur utama dari Android antara lain WiFi hotspot, Multi-touch, Multitasking, GPS, support java, mendukung banyak jaringan (GSM/EDGE, IDEN, CDMA, EV-DO, UMTS, Bluetooth, Wi-Fi, LTE, and WiMAX) dan juga kemampuan dasar telepon seluler pada umumnya. (Alicia Sinsuw ; 2013 : 2)
25
26
II.10.2. Android OS Android OS adalah sistem operasi yang berbasis Linux, sistem operasi open source. Selain Android Software Development Kit (SDK) untuk pengembangan aplikasi, android juga tersedia bebas dalam bentuk sistem operasi. Hal ini yang menyebabkan vendor-vendor smartphone begitu berminat untuk memproduksi smartphone dan komputer tablet berbasis Android. (Alicia Sinsuw ; 2013 : 2)
II.10.3. Android SDK (Software Development Kit) Android SDK adalah tools API (Aplication Programming Interface) yang diperlukan untuk mengembangkan aplikasi pada platform Android menggunakan bahasa pemrograman Java. Beberapa fitur-fitur Android yang paling penting adalah mesin Virtual Dalvik yang dioptimalkan untuk perangkat mobile, integrated browser berdasarkan engine open source WebKit, Grafis yang dioptimalkan dan didukung oleh libraries grafis 2D, grafis 3D berdasarkan spesifikasi opengl ES 1.0 (Opsional akselerasi perangkat keras), kemudian SQLite untuk penyimpanan data (database). Fitur-fitur android lainnya termasuk media yang mendukung audio, video, dan gambar, juga ada fitur bluetooth, EDGE, 3G dan WiFi, dengan fitur kamera, GPS, dan kompas. Selanjutnya fitur yang juga turut disediakan adalah lingkungan Development yang lengkap dan kaya termasuk perangkat emulator, tools untuk debugging, profil dan kinerja memori, dan plugin untuk IDE Eclipse. (Alicia Sinsuw ; 2013 : 2)
26
27
II.10.4. AVD (Android Virtual Device) Android Virtual Device merupakan emulator untuk menjalankan aplikasi android, yang tampilannya dapat dilihat pada gambar 1. Setiap AVD terdiri dari sebuah profil perangkat keras yang dapat mengatur pilihan untuk menentukan fitur hardware emulator. Misalnya, menentukan apakah menggunakan perangkat kamera, apakah menggunakan keyboard QWERTY fisik atau tidak, berapa banyak memori internal, dan lain-lain. AVD juga memiliki sebuah pemetaan versi Android, maksudnya kita menentukan versi dari platform Android akan berjalan pada emulator. Pilihan lain dari AVD, misalnya menentukan skin yang kita ingin gunakan pada emulator, yang memungkinkan untuk menentukan dimensi layar, tampilan, dan sebagainya. Kita juga dapat menentukan SD Card virtual untuk digunakan dengan di emulator. (Alicia Sinsuw ; 2013 : 2)
Gambar II.5. Tampilan AVD Sumber : (Alicia Sinsuw ; 2013 : 3)
27
28
II.11. UML (Unified Modelling Language) Unified Modelling Language (UML) adalah sebuah "bahasa" yg telah menjadi
standar
dalam
industri
untuk
visualisasi,
merancang
dan
mendokumentasikan sistem piranti lunak. UML menawarkan sebuah standar untuk merancang model sebuah sistem. Dengan menggunakan UML kita dapat membuat model untuk semua jenis aplikasi piranti lunak, dimana aplikasi tersebut dapat berjalan pada piranti keras, sistem operasi dan jaringan apapun, serta ditulis dalam bahasa pemrograman apapun. Tetapi karena UML juga menggunakan class dan operation dalam konsep dasarnya, maka ia lebih cocok untuk penulisan piranti lunak dalam bahasa-bahasa berorientasi objek seperti C++, Java, C# atau VB.NET. Walaupun demikian, UML tetap dapat digunakan untuk modeling aplikasi prosedural dalam VB atau C. Seperti bahasa-bahasa lainnya, UML mendefinisikan notasi dan syntax/semantik. Notasi UML merupakan sekumpulan bentuk khusus untuk menggambarkan berbagai diagram piranti lunak. Setiap bentuk memiliki makna tertentu, dan UML syntax mendefinisikan bagaimana bentuk-bentuk tersebut dapat dikombinasikan. Notasi UML terutama diturunkan dari 3 notasi yang telah ada sebelumnya: Grady Booch OOD (Object-Oriented Design), Jim Rumbaugh OMT (Object Modeling Technique), dan Ivar Jacobson OOSE (Object-Oriented Software Engineering).
Sejarah UML sendiri cukup
panjang. Sampai era tahun 1990 seperti kita ketahui puluhan metodologi pemodelan berorientasi objek telah bermunculan di dunia. Diantaranya adalah: metodologi booch, metodologi coad, metodologi OOSE, metodologi OMT, metodologi shlaer-mellor, metodologi wirfs-brock, dsb. Masa itu terkenal dengan
28
29
masa perang metodologi (method war) dalam pendesainan berorientasi objek. Masing-masing metodologi membawa notasi sendiri-sendiri, yang mengakibatkan timbul masalah baru apabila kita bekerjasama dengan group/perusahaan lain yang menggunakan metodologi yang berlainan. Dimulai pada bulan Oktober 1994 Booch, Rumbaugh dan Jacobson, yang merupakan tiga tokoh yang boleh dikata metodologinya
banyak digunakan
mempelopori
usaha
untuk penyatuan
metodologi pendesainan berorientasi objek. Pada tahun 1995 direlease draft pertama dari UML (versi 0.8). Sejak tahun 1996 pengembangan tersebut dikoordinasikan oleh Object Management Group (OMG – http://www.omg.org). Tahun 1997 UML versi 1.1 muncul, dan saat ini versi terbaru adalah versi 1.5 yang dirilis bulan Maret 2003. Booch, Rumbaugh dan Jacobson menyusun tiga buku serial tentang UML pada tahun 1999. Sejak saat itulah UML telah menjelma menjadi standar bahasa pemodelan untuk aplikasi berorientasi objek.
(Yuni
Sugiarti ; 2013 : 33) Dalam pembuatan skripsi ini penulis menggunakan diagram Use Case yang terdapat di dalam UML. Adapun maksud dari Use Case Diagram diterangkan dibawah ini. 1.
Use Case Diagram Use case diagram menggambarkan fungsionalitas yang diharapkan dari
sebuah sistem. Yang ditekankan adalah “apa” yang diperbuat sistem, dan bukan “bagaimana”. Sebuah use case merepresentasikan sebuah interaksi antara aktor dengan sistem. Use case merupakan sebuah pekerjaan tertentu, misalnya login ke sistem, meng-create sebuah daftar belanja, dan sebagainya. Seorang/sebuah aktor
29
30
adalah sebuah entitas manusia atau mesin yang berinteraksi dengan sistem untuk melakukan pekerjaan-pekerjaan tertentu. Use case diagram dapat sangat membantu
bila
kita
sedang
menyusun
requirement
sebuah
sistem,
mengkomunikasikan rancangan dengan klien, dan merancang test case untuk semua feature yang ada pada sistem. Sebuah use case dapat meng-include fungsionalitas use case lain sebagai bagian dari proses dalam dirinya. Secara umum diasumsikan bahwa use case yang di-include akan dipanggil setiap kali use case yang meng-include dieksekusi secara normal. Sebuah use case dapat diinclude oleh lebih dari satu use case lain, sehingga duplikasi fungsionalitas dapat dihindari dengan cara menarik keluar fungsionalitas yang common. Sebuah use case juga dapat meng-extend use case lain dengan behaviour-nya sendiri. Sementara hubungan generalisasi antar use case menunjukkan bahwa use case yang satu merupakan spesialisasi dari yang lain. (Yuni Sugiarti ; 2013 : 41)
Gambar II.6. Use Case Diagram Sumber : (Junaedi Siregar ; 2013 : 76)
30
31
2. Class Diagram Diagram kelas atau class diagram menggambarkan struktur sistem dari segi pendefinisian kelas-kelas yang akan dibuat untuk membangun sistem. Kelas memiliki apa yang disebut atribut dan metode atau operasi. Berikut adalah simbolsimbol pada diagram kelas :
Gambar II.7. Class Diagram Sumber : (Yuni Sugiarti ; 2013 : 59)
31
32
3. Sequence Diagram Diagram Sequence menggambarkan kelakuan/prilaku objek pada use case dengan mendeskripsikan waktu hidup objek dan message yang dikirimkan dan diterima antar objek. Oleh karena itu untuk menggambarkan diagram sequence maka harus diketahui objek-objek yang terlibat dalam sebuah use case beserta metode-metode yang dimiliki kelas yang diinstansiasi menjadi objek itu. Banyaknya diagram sequence yang harus digambar adalah sebanyak pendefinisian use case yang memiliki proses sendiri atau yang penting semua use case yang telah didefinisikan interaksi jalannya pesan sudah dicakup pada diagram sequence sehingga semakin banyak use case yang didefinisikan maka diagram sequence yang harus dibuat juga semakin banyak.
Costomer
Login Screen
Security Manager
Users
Login
Validate User Check Use Details [ User Details ] Validate
1 : Use Case Model >
Gambar II.8. Contoh Sequence Diagram Sumber : (Yuni Sugiarti ; 2013 : 63)
32
33
4. Activity Diagram Activity diagram menggambarkan berbagai alir aktivitas dalam sistem yang sedang dirancang, bagaimana masing-masing alir berawal, decision yang mungkin terjadi, dan bagaimana mereka berakhir. Activity diagram juga dapat menggambarkan proses paralel yang mungkin terjadi pada beberapa eksekusi. Activity diagram merupakan state diagram khusus, di mana sebagian besar state adalah action dan sebagian besar transisi di-trigger oleh selesainya state sebelumnya (internal processing). Oleh karena itu activity diagram tidak menggambarkan behaviour internal sebuah sistem (dan interaksi antar subsistem) secara eksak, tetapi lebih menggambarkan proses-proses dan jalur-jalur aktivitas dari level atas secara umum. Sebuah aktivitas dapat direalisasikan oleh satu use case atau lebih. Aktivitas
menggambarkan
proses
yang
berjalan,
sementara
use
case
menggambarkan bagaimana aktor menggunakan sistem untuk melakukan aktivitas. Sama seperti state, standar UML menggunakan segiempat dengan sudut membulat
untuk
menggambarkan
aktivitas.
Decision
digunakan
untuk
menggambarkan behaviour pada kondisi tertentu. Untuk mengilustrasikan prosesproses paralel (fork dan join) digunakan titik sinkronisasi yang dapat berupa titik, garis horizontal atau vertikal. Activity diagram dapat dibagi menjadi beberapa object swimlane untuk menggambarkan objek mana yang bertanggung jawab untuk aktivitas tertentu.
33
34
Find Beverage
[no coffee]
decision
Start
Put Coffee In Filter
Add Water to Reservoir
Get Cups Get Can of Cola
Put Filter In Machine
[no cola]
Turn on Machine
Brew Coffee
Pour Coffee
Drink Beverage End
Gambar II.9. Activify Diagram Sumber : (Yuni Sugiarti ; 2013 : 76)
34
BAB III ANALISIS DAN DESAIN SISTEM
10
BAB III ANALISIS DAN DESAIN SISTEM III.1. Analisa Masalah Kebutuhan manusia akan perangkat informasi dan komunikasi seakan menjadi kebutuhan yang tidak terpisahkan dalam kehidupan. Dengan banyaknya aplikasi pada saat ini sangat membantu mengurangi aktifitas yang dilakukan oleh banyak orang. Saat ini perkembangan teknologi informasi dan komunikasi dari waktu ke waktu kian meningkat. Salah satunya adalah pengiriman SMS dengan Mobile Phone Andorid. Pemanfaatan SMS dalam penggunaannya sangat memungkinkan setiap pengguna dalam mengirim atau menerima informasi dengan cepat. SMS merupakan pesan teks yang mempunyai ukuran yang sudah ditetapkan, dengan batasan 160 karakter per SMS. Dengan penggunaan SMS juga tergantung ketentuan dari operator yang digunakan dengan biaya yang telah ditetapkan oleh masing-masing operator. Pengamanan juga menjadi aspek penting yang perlu diperhatikan dalam penggunaan SMS. Pada masa dewasa ini, masih seringnya beberapa pihak yang tidak bertanggung jawab yang melakukan pembobolan SMS. Untuk itu pentingnya penerapan pengamanan
pada SMS
sehingga menjamin keaslian SMS yang dikirim maupun yang diterima.Salah satu dukungan yang ada pada perangkat seluler, pengguna dapat menggunakan pesan SMS atau dalam bahasa Indonesia adalah pesan singkat. Dalam dunia komputer pengamanan dikenal dengan Kriptografi yang berasal dari bahasa Yunani yaitu cryptós yang artinya “secret” (yang tersembunyi)
35
36
dan gráphein yang artinya “writting” (tulisan). Jadi, kriptografi berarti ”secret writting” (tulisan rahasia). kriptografi adalah ilmu dan seni untuk menjaga keamanan pesan sehingga memungkinkan kemanan yang dikirim. Salah satu metode kriptografi dalam pengamanan SMS adalah Blowfish. Penggunaan algoritma blowfish sangat memungkinkan Blowfish melakukan enkripsi data pada microprocessors 32-bit dengan rate 26 clock cycles per byte serta memiliki tingkat keamanan yang bervariasi, panjang kunci yang digunakan oleh Blowfish dapat bervariasi dan bisa sampai sepanjang 448 bit. Pada desain menu pada aplikasi untuk keamanan sms dapat dijelaskan sebagai berikut. 1. Splash, yang berfungsi permulaan untuk mengload aplikasi. 2. Menu Sms, merupakan tampilan yang digunakan untuk memilih layanan aplikasi. 3. New Sms, merupakan menu yang berfungsi untuk membuat pesan baru. 4. Read Sms, merupakan menu yang berfungsi untuk membaca sms yang diterima oleh aplikasi.
III.2. Spesifikasi Perangkat Dalam perancangan aplikasi untuk perangkat mobile android ini penulis menggunakan beberapa perangkat agar aplikasi berjalan dengan baik dan sesuai dengan yang diharapkan, yaitu sebagai berikut : 1. Perangkat Keras (Hardware) a. Komputer yang setara Core i3.
37
b. Smartphone Android dengan OS 4.1 atau diatasnya. c. Mouse, keyboard, dan Monitor. 2. Perangkat Lunak (Software) a. Operating System, OS yang digunakan dalam perancangan dan tes untuk adalah Windows 7 dan OS Android pada perangkat mobile. b. JDK Java 1.7, sebagai bahasa program dan compiler Java. c. Eclipse, sebagai editor source code Java.
III.2.1. Teknik Pemecahan Masalah Teknik pemecahan masalah tentang perancangan aplikasi keamanan sms yang dibuat memiliki beberapa poin yaitu sebagai berikut: 1. Pada langkah awal analisa terhadap perancangan yang akan dibangun terutama tentang keamanan sms yang menggunakan perangkat mobile phone android. 2. Dalam perancangan aplikasi dalam persiapan adalah menentukan perangkat yang dibutuhkan dalam membangun aplikasi seperti perangkat keras maupun perangkat lunak. 3. Selanjutnya
dilakukan
perancangan
sistem
yang
nantinya
akan
di
implementasikan pada aplikasi yang akan dibangun. 4. Proses uji coba yang akan dilakukan terhadap inputan, proses ataupun output aplikasi, apakah sudah sesuai dengan perancangan yang telah direncanakan sebelumnya.
38
III.2.2. Analisa Proses Penyelesaian Algoritma Blowfish diciptakan oleh seorang Cryptanalyst bernama Bruce Schneier, Presiden perusahaan Counterpane Internet Security, Inc (Perusahaan konsultan tentang kriptografi dan keamanan komputer) dan dipublikasikan tahun 1994. Dibuat untuk digunakan pada komputer yang mempunyai microposesor besar (32-bit keatas dengan cache data yang besar). Blowfish merupakan algoritma yang tidak dipatenkan dan licensefree, dan tersedia secara gratis untuk berbagai macam kegunaan (Syafari, 2007). Pada saat Blowfish dirancang, diharapkan mempunyai kriteria perancangan sebagai berikut (Schneier, 1996) : 1. Cepat, Blowfish melakukan enkripsi data pada microprocessors 32-bit dengan rate 26 clock cycles per byte. 2. Compact (ringan), Blowfish dapat dijalankan pada memori kurang dari 5K. 3. Sederhana, Blowfish hanya menggunakan operasi-operasi sederhana: penambahan, XOR, dan lookup tabel pada operan 32-bit. 4. Memiliki tingkat keamanan yang bervariasi, panjang kunci yang digunakan oleh Blowfish dapat bervariasi dan bisa sampai sepanjang 448 bit. Dalam penerapannya sering kali algortima ini menjadi tidak optimal. Karena strategi implementasi yang tidak tepat. Algoritma Blowfish akan lebih optimal jika digunakan untuk aplikasi yang tidak sering berganti kunci, seperti jaringan komunikasi atau enkripsi file otomatis. Selain itu, karena algoritma ini membutuhkan memori yang besar, maka algoritma ini tidak dapat diterapkan untuk aplikasi yang memiliki memori kecil seperti smart card. Panjang kunci
39
yang digunakan, juga mempengaruhi keamanan penerapan algoritma ini. Algoritma Blowfish terdiri atas dua bagian, yaitu ekspansi kunci dan enkripsi.
III.2.3. Ekspansi kunci (Key-expansion) Berfungsi merubah kunci (minimum 32-bit, maksimum 448-bit) menjadi beberapa array subkunci (subkey) dengan total 4168 byte (18x32-bit untuk Parray dan 4x256x32-bit untuk S-box sehingga totalnya 33344 bit atau 4168 byte). Kunci disimpan dalam K-array: K1, K2, ... Kj 1 _ j _ 14 Kunci-kunci ini yang dibangkitkan (generate) dengan menggunakan subkunci yang harus dihitung terlebih dahulu sebelum enkripsi atau dekripsi data. Sub-sub kunci yang digunakan terdiri dari : P-array yang terdiri dari 18 buah 32-bit subkunci, P1, P2, ..., P18 S-box yang terdiri dari 4 buah 32-bit, masing-masing memiliki 256 entri : S1,0, S1,1, ..., S1,255 S2,0, S2,1, ..., S2,255 S3,0, S3,1, ..., S3,255 S4,0, S4,1, ..., S4,255 Langkah-langkah perhitungan atau pembangkitan subkunci tersebut adalah sebagai berikut: 1. Inisialisasi P-array yang pertama dan juga empat S-box, berututan, dengan string yang telah pasti.
40
String tersebut terdiri dari digit-digit heksadesimal dari phi, tidak termasuk angka tiga di awal. Contoh : P1= 0x243f6a88 P2= 0x85a308d3 P3= 0x13198a2e P4= 0x03707344 dan seterusnya sampai S-box yang terakhir (daftar heksadesimal digit dari phi untuk P-array dan Sbox. 2. XOR-kan P1 dengan 32-bit awal kunci, XOR-kan P2 dengan 32-bit berikutnya dari kunci, dan seterusnya untuk semua bit kunci. Ulangi siklus seluruh bit kunci secara berurutan sampai seluruh P-array ter-XOR-kan dengan bit-bit kunci. Atau jika disimbolkan : P1 = P1 _ K1, P2 = P2 _K2, P3 = P3 _ K3, . . . P14 = P14_ K14, P15 = P15 _ K1, . . . P18 = P18 _ K4. Keterangan : _ adalah simbol untuk XOR. 3. Enkripsikan string yang seluruhnya nol (all-zero string) dengan algoritma Blowfish, menggunakan subkunci yang telah dideskripsikan pada langkah 1 dan 2. 4. Gantikan P1 dan P2 dengan keluaran dari langkah 3. 5. Enkripsikan keluaran langkah 3 menggunakan algoritma Blowfish dengan subkunci yang telah dimodifikasi. 6. Gantikan P3 dan P4 dengan keluaran dari langkah 5.
41
7. Lanjutkan langkah-langkah di atas, gantikan seluruh elemen P-array dan kemudian keempat S-box secara berurutan, dengan hasil keluaran algoritma Blowfish yang terus-menerus berubah. Total keseluruhan, terdapat 521 iterasi untuk menghasilkan subkunci subkunci dan membutuhkan memori sebesar 4KB.
III.2.4. Enkripsi Data Terdiri dari iterasi fungsi sederhana (Feistel Network) sebanyak 16 kali putaran (iterasi), masukannya adalah 64-bit elemen data X. Setiap putaran terdiri dari permutasi kunci-dependent dan substitusi kunci- dan datadependent. Semua operasi adalah penambahan (addition) dan XOR pada variabel 32-bit. Operasi tambahan lainnya hanyalah empat penelusuran tabel array berindeks untuk setiap putaran. Langkahnya adalah seperti berikut : 1. Bagi X menjadi dua bagian yang masing-masing terdiri dari 32-bit: XL, XR. 2. Lakukan langkah berikut : For i = 1 to 16: XL = XL _ Pi XR = F(XL) _ XR Tukar XL dan XR 3. Setelah iterasi ke-16, tukar XL dan XR lagi untuk melakukan membatalkan pertukaran terakhir. 4. Lalu lakukan : XR = XR _ P17 XL = XL _ P18
42
5. Terakhir, gabungkan kembali XL dan XR untuk mendapatkan cipherteks. Untuk lebih jelasnya, gambaran tahapan pada jaringan feistel yang digunakan Blowfish adalah seperti pada Gambar III.1.
Gambar III.1. Blok Diagram Algoritma Enkripsi Blowfish Pada langkah kedua, telah dituliskan mengenai penggunaan fungsi F. Fungsi F adalah: bagi XL menjadi empat bagian 8-bit: a,b,c dan d. F(XL) = ((S1,a + S2,b mod 232) XOR S3,c) + S4,d mod 2. Agar dapat lebih memahami fungsi F, tahapannya dapat dilihat pada Gambar III.2 berikut ini :
43
Gambar III.2. Fungsi F dalam Blowfish Dekripsi sama persis dengan enkripsi, kecuali bahwa P1, P2,…, P18 digunakan pada urutan yang berbalik (reverse). Algoritmanya dapat dinyatakan sebagai berikut : for i = 1 to 16 do XRi = XLi-1 _ P19-i; XLi = F[XRi] _ XRi-1; XL17 = XR16 _ P1; XR17 = XL16 _ P2; Blok diagram dekripsi seperti pada Gambar III.3 berikut ini :
44
Gambar III.3. Blok Diagram Dekripsi Blowfish
45
III.3. Desain Sistem Dalam proses perancangan ini akan akan membarikan beberapa penjelasan mengenai beberapa rancangan aplikasi yang akan dikerjakan yang menggunakan perangkat android yaitu sebagai berikut:
III.3.1. Use Case Diagram Use case diagram berfungsi untuk menggambarkan kegiatan aktor atau pengguna aplikasi, adapun use case diagram aplikasi yang dirancang dapat dilihat pada gambar III.4 berikut. Perancangan Aplikasi Pengamanan Teks SMS Dengan Implementasi Algoritma Blowfish Pada Perangkat Mobile Phone Andoid Splash
Menu Utama Keamanan SMS
Read SMS
Draft
<Extend>
Actor
InBox
New SMS
<Extend>
Send SMS
InBox
Send Box
Gambar III.4. Use Case Diagram Dari gambar use case diagram diatas, pengguna memulai aplikasi dan memilih menu sms .
III.3.2. Activity Diagram Pada activity diagram dibawah ini menggambarkan proses yang berjalan pada aplikasi android terdapat beberapa menu yang ditampilkan.Proses yang
46
berlangsung terjadi setelah pengguna menjalankan aplikasi, yang dapat dilihat pada gambar III.5 berikut.
Sistem
Android
Menjalankan Aplikasi
Splash Logo
Menu
New SMS
Form New SMS Inbox/OutBox
Form Read SMS About Program
Form About Program HelpProgram
Form Help Program Exit
Gambar III.5. ActivityDiagramAndroid Dari gambar Activty diagram diatas, proses aplikasi merupakan tahapan yang disajikan terhadap cara kerja aplikasi keamanan sms ketika digunakan oleh pengguna.
III.3.3. Sequence Diagram Sequence diagram yang digunakan untuk menggambarkan sistem pada sebuah adegan untuk proses penggunaan aplikasi. Berikut ini adalah Sequence diagram yang dirancang
47
1. Sequnce Diagram Strart Aplikasi, untuk diagram proses start aplikasi dapat dilihat pada gambar III.6 dibawah ini. Start Aplikasi
Android
Sistem
1.[Membuka Form Mulai]
2.[Load Proces]
3.[Tampilkan]
Gambar III.6. Sequence Diagram Start Aplikasi 2. Sequnce
Diagram
menampilkan
menu
sms,
untuk
diagram
proses
menampilkan menu sms dapat dilihat pada gambar III.7 dibawah ini. Android
Menu SMS
Sistem
1. [Menu SMS] 2. [Load Proses]
3. [Tampilkan]
Gambar III.7. Sequence Diagram Menampilkan Menu SMS
3. Sequnce Diagram Mengirim SMS, untuk diagram proses Mengirim SMS dapat dilihat pada gambar III.8 dibawah ini.
48
Android
New SMS
Send SMS
Sistem
1. [Mebuka New SMS]
2. [Load Proses] 3. [Tampilkan]
1. [Mengetikan Pesan]
2. [Mengirim Pesan] 3. [Respon]
Gambar III.8. Squence Diagram Mengirim Pesan
4. Sequnce Diagram Pesan Masuk, untuk diagram Pesan Masuk dapat dilihat pada gambar III.9 dibawah ini. Android
Inbox
Sistem
1. [Mebuka Inbox SMS] 2. [Load Proses]
3. [Tampilkan]
Gambar III.9. Sequence Diagram Pesan Masuk
5. Sequnce Diagram Pesan Pesan Terkirim , untuk diagram Pesan Terkirim dapat dilihat pada gambar III.10 berikut :
49
Android
Sistem
SendBox 1. [Mebuka SendBox]
2. [Load Proses]
3. [Tampilkan]
Gambar III.10. Sequence Diagram Pesan Terkirim
6. Sequnce Diagram Pesan Tersimpan , untuk diagram Pesan Tersimpan dapat dilihat pada gambar III.11 dibawah ini. Android
Darft
Sistem
1. [Mebuka SendBox]
2. [Load Proses]
3. [Tampilkan]
Gambar III.11. Sequence Diagram Pesan Tersimpan
50
III.4.
Desain Interface Dalam perancangan aplikasi memiliki beberapa tampilan yang disediakan,
rancangan tampilan yang ada pada aplikasi android adalah sebagai berikut. 1. Rancangan Splash Rancangan layar splash merupakan rancangan awal diamana saat aplikasi dibuka atau dijalankan , adapun rancangan tersebut dapat dilihat pada gambar III.12.
Blowfis SMS Blowfish Penyandian SMS
Gambar III.12. Rancangan Form Splash 2. Rancangan Menu Rancangan menu adalah tampilan menu yang ada setelah pengguna masuk ke dalam aplikasi. Untuk lebih jelasnya dapat dilihat pada gambar III.13 berikut.
51
Blowfish SMS Pesan Baru Pesan Masuk Pesan keluar Tentang Aplikasi Panduan Aplikasi Tutup
Gambar III.13. Rancangan Menu Pada gambar diatas terdapat beberapa menu yang dapat dijelaskan antara lain sebagai berikut : a. Pesan baru, merupakan menu untuk rancangan dalam membuat sms baru yaitu dengan mengetikkan text kata-kata melalui menu pesan baru. b. Pesan masuk, pada menu ini merupakan menu yang digunakan untuk membuka pesan masuk dan membaca pesan masuk. c. Pesan keluar, merupakan menu untuk membuka pesan yang telah terkirim. d. Tentang Aplikasi, merupakan menu untuk menyajikan informasi mengenai developer pembuat program. e. Panduan Aplikasi, merupakan menu untuk menyajikan inforamsi tetang cara penggunaan
aplikasi
sehingga
memudahkan
mengoperasikannya. f. Tutup, merupakan menu untuk keluar dari aplikasi.
pengguna
dalam
52
3. Rancangan New Sms Form ini berfungsi untuk tampilan awal pengguna sebelum masuk ke permainan. Yang dapat dilihat pada gambar III.14. berikut.
Pesan Baru Penerima : Password : Isi SMS :
Kirim Pesan
Gambar III.14. Rancangan New Sms 4. Rancangan Read Sms Form ini berfungsi untuk menampilkan sms pesan masuk, pesan terkirim, dan pesan yang tersimpan di aplikasi keamanan sms. Yang dapat dilihat pada gambar III.15. berikut :
53
Pesan Masuk Pesan 1 Pesan 2 Pesan 3 Pesan 4 Pesan 5 Pesan 6
Gambar III.15. Rancangan Papan Permainan Pada gambar diatas terdapat fitur-fitur ketika pengguna menjalankan aplikasi yang diantaranya adalah sebagai berikut : a. Inbox yang digunakan untuk menampung dan menampilkan pesan masuk. b. Sent Box yang berguna untuk menampung pesan terkirim . c. Darft, menu yang berguna untuk menampung pesan yang isin disimpan. d. Item merupakan dafatar urusan pesan yang tertampil di list pesan Pengguna dapat melihat semua pesan yang telah dikirim, membaca pesan yang masuk, melihat daftar pesan yang dikirim kepada yang di tuju, serta menyimpan pesan yang kita anggap penting .
5. Rancangan Form About Form ini menampilkan informasi tentang penggunaan aplikasikeamanan sms, yang dapat dilihat pada gambar III.16 berikut.
54
About Program
ABOUTProgram
Gambar III.16. Rancangan Form About Program
6. Rancangan Form tentang Aplikasi Form ini berfungsi untuk menampilkan informasi tentang cara menggunakan aplikasi keamanan sms ini, dapat dilihat pada gambar III.17 berikut. Help Program
HELPProgram
Gambar III.17. Rancangan Form Help
BAB IV HASIL DAN UJI COBA
BAB IV HASIL DAN UJI COBA
IV.1. Hasil Pada bab ini akan dijelaskan tampilan hasil dari aplikasi yang telah dibuat, yang digunakan untuk memperjelas tentang tampilan-tampilan yang ada pada aplikasi Keamanan SMS. Sehingga hasil implementasinya dapat dilihat sesuai dengan hasil program yang telah dibuat. Dibawah ini akan dijelaskan tiap-tiap tampilan yang ada pada program.
IV.1.1. Tampilan Menu Splash Tampilan menu splash merupakan tampilan menu pembuka atau loading untuk menu ke menu utama pada aplikasi. Gambar tampilan menu splash ditunjukkan pada gambar IV.1 berikut ini:
Gambar IV.1 Tampilan Menu Splash 55
56
IV.1.2.Tampilan Menu Utama Tampilan ini merupakan tampilan utama pada aplikasi yang dapat mengakses menu-menu lainnya. Adapun gambar tesebut dapat dilihat pada gambar IV.2 berikut ini :
Gambar IV.2 Tampilan Menu Utama Pada menu utama gambar IV.2 di atas menampilkan menu aplikasi dalam menjalankannya. Menu utama ini menampilkan beberapa menu yaitu : pesan baru yaitu untuk melakukan pengiriman SMS, Menu Pesan Masuk yaitu untuk melihat pesan yang masuk, Menu pesan keluar yaitu untuk memastikan apakah pesan yang dikirim berhasil terkirim atau gagal, Menu tentang aplikasi yaitu tampilan yang memberikan keterangan tentang aplikasi yang dirancang, Menu panduan aplikasi yaitu menu yang dapat membantu para pengguna dalam menjalankan aplikasi, serta menu tutup yaitu menu yang tersedia untuk menutup aplikasi.
57
IV.1.3. Tampilan Menu Pesan Baru Tampilan ini merupakan tampilan akses untuk menulis sms dan mengirim sms. Untuk mengirim sms cukup meng-Klik tombol send. Gambar tampilan Menu Pesan Baru ditunjukkan pada gambar IV.3 berikut ini:
Gambar IV.3 Tampilan Menu Pesan Baru Dari tampilan gambar IV.3 di atas merupakan tampilan untuk mengirim SMS, dimana dalam melakukan pengiriman SMS terlebih dahulu menginputkan nomor tujuan pengiriman dan pengisi password pengiriman.
IV.1.4. Tampilan Menu Pesan Masuk Tampilan ini merupakan tampilan untuk melihat list-list pesan masuk, pesan yang terkirim dan pesan yang tersimpan,. Gambar tampilan Menu Pesan Baru ditunjukkan pada gambar IV.4 berikut ini:
58
Gambar IV.4 Tampilan Menu Pesan Masuk
IV.1.5 Pesan Masuk Tampilan ini merupakan tampilan untuk melihat pesan masuk. Gambar tampilan Menu Pesan Masuk ini merupakan tampilan aplikasi yang disediakan bagi pengguna untuk melhat pesan masuk yang ditunjukkan pada gambar IV.5 berikut ini:
59
Gambar IV.5 Tampilan Menu Pesan Masuk
IV.1.6 Pembahasan Dalam perancangan “Perancangan Apliaksi pengamanan teks sms dengan implementasi algoritma blowfish pada mobile phone android”, untuk perangkat mobile android ini penulis menggunakan beberapa perangkat agar aplikasi berjalan dengan baik dan sesuai dengan yang diharapkan, yaitu sebagai berikut : 3. Perangkat Lunak (Software) a. Operating System, OS yang digunakan dalam perancangan dan tes untuk adalah Windows 7 dan OS Android pada perangkat mobile. b. JDK Java 1.7, sebagai bahasa program dan compiler Java. c. Eclipse, sebagai editor source code Java. 4. Perangkat Keras (Hardware) a. Komputer yang setara Core i3. b. Smartphone Android dengan OS 4.1 atau diatasnya. c. Mouse, keyboard, dan Monitor.
60
IV.2. Uji Coba Sistem IV.2.1. Sekenario Pengujian Tahap ini merupakan tahap dimana akan dilakukan sebuah skenario pengujian terhadap sistem yang telah dibangun. Adapun skenario pengujian sistem yang dilakukan ialah dengan menggunakan metode pengujian sistem berupa blackbox testing. Pengujian blackbox (blackbox testing) adalah salah satu metode pengujian perangkat lunak yang berfokus pada sisi fungsionalitas, khususnya pada input dan output aplikasi (apakah sudah sesuai dengan apa yang diharapkan atau belum). Tahap pengujian atau testing merupakan salah satu tahap yang harus ada dalam sebuah siklus pengembangan perangkat lunak (selain tahap perancangan atau desain). Berikut pengujian sistem dengan metode blackbox testing yang disajikan pada tabel pengujian blackbox seperti dibawah ini:
Tabel IV.1 Hasil Pengujian Black Box Testing N o 1
Skenario Test Case Pengujian Membuka Loading Halaman Splash Awal Apliaksi
2
Proses Enkripsi Sms
Send Sms
3
Menerima
Form
Hasil yang diharapkan Aplikasi memproses Loading Form Splash dan menuju Ke Menu Utama Ketika Sms Yang telah ditulis dan dikrim ke penerima pesan sudah di enkripsi Aplikasi dapat
Hasil Pengujian Sesuai dengan yang diharapkan
Kesimpulan Valid
Sesuai dengan yang diharapkan
Valid
Sesuai
Valid
61
Pesan, Melihat Pesan, Terkirim, Simpan Pesan
Inbox/Outb ox
menerima dengan pesan yang yang dikirim diharapkan melalui perangkat lain, ketika pengiriminan pesan berhasil aplikasi dapat menampilkan history pesan terkirim, aplikasi dapat menyimpan pesan yang diinginkan
IV.3. Kelebihan Sistem yang dirancang Adapun beberapa kelebihan yang dimiliki oleh SMS BLOW FISH ini adalah sebagai berikut : 1. Aplikasi dapat memproses SMS yang terkirim dengan mengenkripsikan pesan SMS terlebih dahulu. 2. Aplikasi pengiriman SMS ini dapat dilakukan dengan android yang pertama dan yang kedua, baik itu untuk mengenkripsi pesan maupun untuk mendiskripsikan pesan yang diterima. IV.3.1Kekurangan Sistem yang dirancang Setiap sistem yang dibangun tentunya memiliki kekurangan, kekurangan yang dimiliki sistem ini adalah : 1. Pada aplikasi yang telah dijalankan, dalam pengiriman SMS BLOW FISH harus terlebih dahulu memasukkan password sebanyak 16 digit.
62
2. Pada perancangan aplikasi, tampilan interface masih memiliki kekurangan, serta butuh perbaikan dalam mendisain sistem sehingga memudahkan para pengguna dalam pemakaiannya. 3. Melihat hasil dari aplikasi yang dijalankan masih butuh penyempurnaan sehingga dalam pengiriman SMS tidak perlu harus memasukkan password sebanyak 16 digit.
BAB V KESIMPULAN DAN SARAN
BAB V KESIMPULAN DAN SARAN V.1. Kesimpulan Kesimpulan dari sistem yang telah dirancang merupakan rangkuman dari seluruh hasil penelitian yang telah dilakukan oleh penulis, beberapa kesimpulan yang berguna kedepannya untuk pengembangan maupun masukan bagi pembaca dan penulis sendiri atau bagi kalangan umum. Adapaun kesimpulan berdasarkan keseluruhan proses yang dilakukan untuk membangun Aplikasi Pengamanan Teks SMS menggunakan Algoritma Blowfish dalam penelitian ini
adalah sebagai
berikut : 1.
Aplikasi ini telah berhasil dibangun dan dapat berfungsi sesuai tujuan, yaitu mengamankan data SMS ataupun informasi yang berupa SMS (plainteks) dengan mengacak SMS tersebut sehingga tidak dapat dibaca atau dimengerti.
2.
Aplikasi ini juga telah berhasil mengembalikan SMS yang telah diacak tersebut (cipherteks) seperti semula dengan menggunakan kunci yang sama sewaktu enkripsi.
3.
Aplikasi ini dapat digunakan untuk melihat kinerja algoritma Blowfish dalam pengimplementasiannya, yaitu bagaimana kecepatan proses enkripsi/dekripsi jika dikaitkan dengan ukuran dari sebuah Data Teks.
4.
Aplikasi ini menggunakan bahasa pemograman java dimana sekumpulan teknologi untuk membuat dan menjalankan perangkat lunak pada komputer ataupun lingkungan jaringan java.
63
64
5.
Aplikasi ini menggunakan software eclipse untuk mendukung kinerja aplikasi yang digunakan.
V.2 Saran Pada perancangan aplikasi Pengamanan Teks SMS menggunakan Algoritma Blowfish dalam penelitian ini, perancang memberikan saran bagi pengembang dimasa mendatang yaitu sebagai berikut : 1. Pada desain Interface dapat dimanfaatkan oleh pengembang untuk membuat desain interface yang menarik perhatian pihak umum sehingga menambah minat para pengguna dalam memanfaatkan aplikasi pengamanan SMS. 2. Dalam aplikasi ini masih dilakukan pengamanan pada teks SMS, sehingga sangat dibutuhkan pengembangan aplikasi sejenis yang berguna dalam mengenkripsi atau melakukan pengamanan pada file data serta pengamanan citra atau pengamanan file lainnya.
DAFTAR PUSTAKA Alicia Sinsuw, Xaverius Najoan, 2013, Prototipe Aplikasi Sistem Informasi Akademik Pada Perangkat Android, Program Studi Teknik Informatika, Jurusan Teknik Elektro Fakultas Teknik Universitas Sam Ratulangi Manado, ISSN : 2301-8402. Dahlan Abdullah, 2013, Bisnis Rental Mobil Melalui Internet (E-Commerce) Menggunakan Algoritma sha-1 (Sequre Hash Algorithm-1), Program Studi Teknik Informatika,Jurusan Teknik Industri Fakultas Teknik, Universitas Malikussaleh Reuleut, Aceh Utara, Aceh-Indonesia, Volume 10 No 4, ISSN : 1979-9330. Hanik Mujiati, Sukadi, 2014, Analisis Dan Perancangan Sistem Informasi Stok Obat Pada Apotek Arjowinangun, Indonesian Jurnal on Computer Science – Speed, ISSN : 1979-9330. Hendra, Sukiman, 2012, Aplikasi Pengaman Pertukaran SMS pada Perangkat Android dengan Metode ECHD dan AES, Jurusan Teknik Informatika STMIK IBBI Medan, Jl. Sei Deli No. 18 Medan 20214 Indonesia. Hendra, Sukiman, 2012, Aplikasi Pengaman Pertukaran SMS pada Perangkat Android dengan Metode ECHD dan AES, Jurusan Teknik Informatika STMIK IBBI Medan, Jl. Sei Deli No. 18 Medan 20214 Indonesia. Ilham Alamsyah, Rd. Erwin Gunadhi, Ir.MT, Asep Deddy Supriatna M.Kom, 2013, Pengelolaan Keamanan Database Pada Data Kepegawaian ( Studi Kasus Di Pdam Tirta Intan Kabupaten Garut ), Jurnal Informatika Sekolah Tinggi Teknologi Garut, Vol. 10 No. 1, ISSN : 2302-7339. Suriski Sitinjak,Yuli Fauziah, Juwairiah, 2010, Aplikasi Kriptografi File Menggunakan Algoritma Blowfish, Jurusan Teknik Informatika UPN "Veteran" Yogyakarta, ISSN: 1979-2328. Sugiarti, Yuni, S.T.M.Kom, 2013, Analisa dan Perancangan UML (Unified Modeling Language) Generated Vb.6, Edisi Pertama, Graha Ilmu, Yogyakarta. Utomo Budiyanto, 2011, Rancang Bangun Aplikasi Mobile Dosen Penasihat Akademik : Studi Kasus Universitas Budi Luhur Jakarta, Jurnal TELEMATIKA MKOM, Universitas Budi Luhur, No. 2, Vol. 3, ISSN 2085-725X
LAMPIRAN
LISTING PROGRAM 1. About.java package com.blowfish.sms; import com.blowfish.sms.R; import android.app.Activity; import android.os.Bundle; public class About extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_about_blowfish); } } 2. BlockCipher.java package com.blowfish.sms; publicinterface BlockCipher { publicvoid init(boolean forEncryption, byte[] key); publicint getBlockSize(); publicvoid transformBlock(byte[] src, int srcoff, byte[] dst, int dstoff); } 3. BlowFish.java package com.blowfish.sms; publicclass BlowFish implements BlockCipher { privatefinalstaticint[] KP = { 0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344, 0xA4093822, 0x299F31D0,0x082EFA98, 0xEC4E6C89, 0x452821E6,0x38D01377, 0xBE5466CF, 0x34E90C6C, 0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5,0xB5470917, 0x9216D5D9, 0x8979FB1B }, KS0 = { 0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7, 0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99, 0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16, 0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E, 0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE, 0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013, 0xC5D1B023, 0x286085F0, 0xCA417918,0xB8DB38EF, 0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E, 0xD71577C1, 0xBD314B27, 0x78AF2FDA, 0x55605C60,0xE65525F3, 0xAA55AB94, 0x57489862,
0x63E81440, 0x55CA396A, 0x2AAB10B6, 0xB4CC5C34, 0x1141E8CE, 0xA15486AF,0x7C72E993, 0xB3EE1411, 0x636FBC2A, 0x2BA9C55D, 0x741831F6, 0xCE5C3E16, 0x9B87931E, 0xAFD6BA33, 0x6C24CF5C,0x7A325381, 0x28958677, 0x3B8F4898, 0x6B4BB9AF, 0xC4BFE81B, 0x66282193, 0x61D809CC, 0xFB21A991, 0x487CAC60,0x5DEC8032, 0xEF845D5D, 0xE98575B1, 0xDC262302, 0xEB651B88, 0x23893E81, 0xD396ACC5, 0x0F6D6FF3, 0x83F44239,0x2E0B4482, 0xA4842004, 0x69C8F04A, 0x9E1F9B5E, 0x21C66842, 0xF6E96C9A, 0x670C9C61, 0xABD388F0, 0x6A51A0D2,0xD8542F68, 0x960FA728, 0xAB5133A3, 0x6EEF0B6C, 0x137A3BE4, 0xBA3BF050, 0x7EFB2A98, 0xA1F1651D, 0x39AF0176, 0x66CA593E,0x82430E88, 0x8CEE8619, 0x456F9FB4, 0x7D84A5C3, 0x3B8B5EBE, 0xE06F75D8, 0x85C12073, 0x401A449F,0x56C16AA6, 0x4ED3AA62, 0x363F7706, 0x1BFEDF72, 0x429B023D, 0x37D0D724, 0xD00A1248, 0xDB0FEAD3, 0x49F1C09B,0x075372C9, 0x80991B7B, 0x25D479D8, 0xF6E8DEF7, 0xE3FE501A, 0xB6794C3B, 0x976CE0BD, 0x04C006BA, 0xC1A94FB6,0x409F60C4, 0x5E5C9EC2, 0x196A2463, 0x68FB6FAF, 0x3E6C53B5, 0x1339B2EB, 0x3B52EC6F, 0x6DFC511F, 0x9B30952C, 0xCC814544,0xAF5EBD09, 0xBEE3D004, 0xDE334AFD, 0x660F2807, 0x192E4BB3, 0xC0CBA857, 0x45C8740F, 0xD20B5F39,0xB9D3FBDB, 0x5579C0BD, 0x1A60320A, 0xD6A100C6, 0x402C7279, 0x679F25FE, 0xFB1FA3CC, 0x8EA5E9F8, 0xDB3222F8,0x3C7516DF, 0xFD616B15, 0x2F501EC8, 0xAD0552AB, 0x323DB5FA, 0xFD238760, 0x53317B48, 0x3E00DF82, 0x9E5C57BB,0xCA6F8CA0, 0x1A87562E, 0xDF1769DB, 0xD542A8F6, 0x287EFFC3, 0xAC6732C6, 0x8C4F5573, 0x695B27B0, 0xBBCA58C8,0xE1FFA35D, 0xB8F011A0, 0x10FA3D98, 0xFD2183B8, 0x4AFCB56C, 0x2DD1D35B, 0x9A53E479, 0xB6F84565, 0xD28E49BC,0x4BFB9790, 0xE1DDF2DA, 0xA4CB7E33, 0x62FB1341, 0xCEE4C6E8, 0xEF20CADA, 0x36774C01, 0xD07E9EFE, 0x2BF11FB4,0x95DBDA4D, 0xAE909198, 0xEAAD8E71, 0x6B93D5A0, 0xD08ED1D0, 0xAFC725E0, 0x8E3C5B2F, 0x8E7594B7, 0x8FF6E2FB, 0xF2122B64, 0x8888B812, 0x900DF01C, 0x4FAD5EA0, 0x688FC31C, 0xD1CFF191, 0xB3A8C1AD, 0x2F2F2218, 0xBE0E1777,0xEA752DFE, 0x8B021FA1, 0xE5A0CC0F, 0xB56F74E8, 0x18ACF3D6, 0xCE89E299, 0xB4A84FE0, 0xFD13E0B7, 0x7CC43B81,0xD2ADA8D9, 0x165FA266, 0x80957705, 0x93CC7314, 0x211A1477, 0xE6AD2065, 0x77B5FA86, 0xC75442F5, 0xFB9D35CF,0xEBCDAF0C, 0x7B3E89A0, 0xD6411BD3, 0xAE1E7E49, 0x00250E2D,
0x2071B35E, 0x226800BB, 0x57B8E0AF, 0x2464369B, 0xF009B91E, 0x5563911D, 0x59DFA6AA, 0x78C14389, 0xD95A537F, 0x207D5BA2, 0x02E5B9C5, 0x83260376, 0x6295CFA9,0x11C81968, 0x4E734A41, 0xB3472DCA, 0x7B14A94A, 0x1B510052, 0x9A532915, 0xD60F573F, 0xBC9BC6E4, 0x2B60A476,0x81E67400, 0x08BA6FB5, 0x571BE91F, 0xF296EC6B, 0x2A0DD915, 0xB6636521, 0xE7B9F9B6, 0xFF34052E, 0xC5855664,0x53B02D5D, 0xA99F8FA1, 0x08BA4799, 0x6E85076A }, KS1 = { 0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623, 0xAD6EA6B0, 0x49A7DF7D, 0x9CEE60B8, 0x8FEDB266, 0xECAA8C71,0x699A17FF, 0x5664526C, 0xC2B19EE1, 0x193602A5, 0x75094C29, 0xA0591340, 0xE4183A3E, 0x3F54989A, 0x5B429D65,0x6B8FE4D6, 0x99F73FD6, 0xA1D29C07, 0xEFE830F5, 0x4D2D38E6, 0xF0255DC1, 0x4CDD2086, 0x8470EB26, 0x6382E9C6, 0x021ECC5E, 0x09686B3F, 0x3EBAEFC9, 0x3C971814, 0x6B6A70A1, 0x687F3584, 0x52A0E286, 0xB79C5305, 0xAA500737, 0x3E07841C,0x7FDEAE5C, 0x8E7D44EC, 0x5716F2B8, 0xB03ADA37, 0xF0500C0D, 0xF01C1F04, 0x0200B3FF, 0xAE0CF51A,0x3CB574B2, 0x25837A58, 0xDC0921BD, 0xD19113F9, 0x7CA92FF6, 0x94324773, 0x22F54701, 0x3AE5E581, 0x37C2DADC,0xC8B57634, 0x9AF3DDA7, 0xA9446146, 0x0FD0030E, 0xECC8C73E, 0xA4751E41, 0xE238CD99, 0x3BEA0E2F, 0x3280BBA1,0x183EB331, 0x4E548B38, 0x4F6DB908, 0x6F420D03, 0xF60A04BF, 0x2CB81290, 0x24977C79, 0x5679B072, 0xBCAF89AF,0xDE9A771F, 0xD9930810, 0xB38BAE12, 0xDCCF3F2E, 0x5512721F, 0x2E6B7124, 0x501ADDE6, 0x9F84CD87, 0x7A584718,0x7408DA17, 0xBC9F9ABC, 0xE94B7D8C, 0xEC7AEC3A, 0xDB851DFA, 0x63094366, 0xC464C3D2, 0xEF1C1847, 0x3215D908,0xDD433B37, 0x24C2BA16, 0x12A14D43, 0x2A65C451, 0x50940002, 0x133AE4DD, 0x71DFF89E, 0x10314E55, 0x81AC77D6,0x5F11199B, 0x043556F1, 0xD7A3C76B, 0x3C11183B, 0x5924A509, 0xF28FE6ED, 0x97F1FBFA, 0x9EBABF2C, 0x1E153C6E,0x86E34570, 0xEAE96FB1, 0x860E5E0A, 0x5A3E2AB3, 0x771FE71C, 0x4E3D06FA, 0x2965DCB9, 0x99E71D0F, 0x803E89D6, 0x5266C825, 0x2E4CC978, 0x9C10B36A, 0xC6150EBA, 0x94E2EA78, 0xA5FC3C53, 0x1E0A2DF4, 0xF2F74EA7, 0x361D2B3D,0x1939260F, 0x19C27960, 0x5223A708, 0xF71312B6, 0xEBADFE6E, 0xEAC31F66, 0xE3BC4595, 0xA67BC883, 0xB17F37D1,0x018CFF28, 0xC332DDEF, 0xBE6C5AA5, 0x65582185, 0x68AB9802, 0xEECEA50F,
0xDB2F953B, 0x2AEF7DAD, 0x5B6E2F84,0x1521B628, 0x29076170, 0xECDD4775, 0x619F1510, 0x13CCA830, 0xEB61BD96, 0x0334FE1E, 0xAA0363CF, 0xB5735C90,0x4C70A239, 0xD59E9E0B, 0xCBAADE14, 0xEECC86BC, 0x60622CA7, 0x9CAB5CAB, 0xB2F3846E, 0x648B1EAF, 0x19BDF0CA,0xA02369B9, 0x655ABB50, 0x40685A32, 0x3C2AB4B3, 0x319EE9D5, 0xC021B8F7, 0x9B540B19, 0x875FA099, 0x95F7997E,0x623D7DA8, 0xF837889A, 0x97E32D77, 0x11ED935F, 0x16681281, 0x0E358829, 0xC7E61FD6, 0x96DEDFA1, 0x7858BA99,0x57F584A5, 0x1B227263, 0x9B83C3FF, 0x1AC24696, 0xCDB30AEB, 0x532E3054, 0x8FD948E4, 0x6DBC3128, 0x58EBF2EF,0x34C6FFEA, 0xFE28ED61, 0xEE7C3C73, 0x5D4A14D9, 0xE864B7E3, 0x42105D14, 0x203E13E0, 0x45EEE2B6, 0xA3AAABEA,0xDB6C4F15, 0xFACB4FD0, 0xC742F442, 0xEF6ABBB5, 0x654F3B1D, 0x41CD2105, 0xD81E799E, 0x86854DC7, 0xE44B476A,0x3D816250, 0xCF62A1F2, 0x5B8D2646, 0xFC8883A0, 0xC1C7B6A3, 0x7F1524C3, 0x69CB7492, 0x47848A0B, 0x5692B285, 0x095BBF00, 0xAD19489D, 0x1462B174, 0x23820E00, 0x58428D2A, 0x0C55F5EA, 0x1DADF43E, 0x233F7061, 0x3372F092,0x8D937E41, 0xD65FECF1, 0x6C223BDB, 0x7CDE3759, 0xCBEE7460, 0x4085F2A7, 0xCE77326E, 0xA6078084, 0x19F8509E,0xE8EFD855, 0x61D99735, 0xA969A7AA, 0xC50C06C2, 0x5A04ABFC, 0x800BCADC, 0x9E447A2E, 0xC3453484, 0xFDD56705,0x0E1E9EC9, 0xDB73DBD3, 0x105588CD, 0x675FDA79, 0xE3674340, 0xC5C43465, 0x713E38D8, 0x3D28F89E, 0xF16DFF20, 0x153E21E7, 0x8FB03D4A, 0xE6E39F2B, 0xDB83ADF7 }, KS2 = { 0xE93D5A68, 0x948140F7, 0xF64C261C, 0x94692934, 0x411520F7, 0x7602D4F7, 0xBCF46B2E, 0xD4A20068, 0xD4082471,0x3320F46A, 0x43B7D4B7, 0x500061AF, 0x1E39F62E, 0x97244546, 0x14214F74, 0xBF8B8840, 0x4D95FC1D, 0x96B591AF,0x70F4DDD3, 0x66A02F45, 0xBFBC09EC, 0x03BD9785, 0x7FAC6DD0, 0x31CB8504, 0x96EB27B3, 0x55FD3941, 0xDA2547E6,0xABCA0A9A, 0x28507825, 0x530429F4, 0x0A2C86DA, 0xE9B66DFB, 0x68DC1462, 0xD7486900, 0x680EC0A4, 0x27A18DEE,0x4F3FFEA2, 0xE887AD8C, 0xB58CE006, 0x7AF4D6B6, 0xAACE1E7C, 0xD3375FEC, 0xCE78A399, 0x406B2A42, 0x20FE9E35, 0xD9F385B9,0xEE39D7AB, 0x3B124E8B, 0x1DC9FAF7, 0x4B6D1856, 0x26A36631, 0xEAE397B2, 0x3A6EFA74, 0xDD5B4332,0x6841E7F7, 0xCA7820FB, 0xFB0AF54E, 0xD8FEB397, 0x454056AC,
0xBA489527, 0x55533A3A, 0x20838D87, 0xFE6BA9B7,0xD096954B, 0x55A867BC, 0xA1159A58, 0xCCA92963, 0x99E1DB33, 0xA62A4A56, 0x3F3125F9, 0x5EF47E1C, 0x9029317C,0xFDF8E802, 0x04272F70, 0x80BB155C, 0x05282CE3, 0x95C11548, 0xE4C66D22, 0x48C1133F, 0xC70F86DC, 0x07F9C9EE,0x41041F0F, 0x404779A4, 0x5D886E17, 0x325F51EB, 0xD59BC0D1, 0xF2BCC18F, 0x41113564, 0x257B7834, 0x602A9C60,0xDFF8E8A3, 0x1F636C1B, 0x0E12B4C2, 0x02E1329E, 0xAF664FD1, 0xCAD18115, 0x6B2395E0, 0x333E92E1, 0x3B240B62, 0xEEBEB922, 0x85B2A20E, 0xE6BA0D99, 0xDE720C8C, 0x2DA2F728, 0xD0127845, 0x95B794FD, 0x647D0862, 0xE7CCF5F0,0x5449A36F, 0x877D48FA, 0xC39DFD27, 0xF33E8D1E, 0x0A476341, 0x992EFF74, 0x3A6F6EAB, 0xF4F8FD37, 0xA812DC60,0xA1EBDDF8, 0x991BE14C, 0xDB6E6B0D, 0xC67B5510, 0x6D672C37, 0x2765D43B, 0xDCD0E804, 0xF1290DC7, 0xCC00FFA3,0xB5390F92, 0x690FED0B, 0x667B9FFB, 0xCEDB7D9C, 0xA091CF0B, 0xD9155EA3, 0xBB132F88, 0x515BAD24, 0x7B9479BF,0x763BD6EB, 0x37392EB3, 0xCC115979, 0x8026E297, 0xF42E312D, 0x6842ADA7, 0xC66A2B3B, 0x12754CCC, 0x782EF11C,0x6A124237, 0xB79251E7, 0x06A1BBE6, 0x4BFB6350, 0x1A6B1018, 0x11CAEDFA, 0x3D25BDD8, 0xE2E1C3C9, 0x44421659,0x0A121386, 0xD90CEC6E, 0xD5ABEA2A, 0x64AF674E, 0xDA86A85F, 0xBEBFE988, 0x64E4C3FE, 0x9DBC8057, 0xF0F7C086, 0x60787BF8, 0x6003604D, 0xD1FD8346, 0xF6381FB0, 0x7745AE04, 0xD736FCCC, 0x83426B33, 0xF01EAB71, 0xB0804187, 0x3C005E5F, 0x77A057BE, 0xBDE8AE24, 0x55464299, 0xBF582E61, 0x4E58F48F, 0xF2DDFDA2, 0xF474EF38, 0x8789BDC2,0x5366F9C3, 0xC8B38E74, 0xB475F255, 0x46FCD9B9, 0x7AEB2661, 0x8B1DDF84, 0x846A0E79, 0x915F95E2, 0x466E598E,0x20B45770, 0x8CD55591, 0xC902DE4C, 0xB90BACE1, 0xBB8205D0, 0x11A86248, 0x7574A99E, 0xB77F19B6, 0xE0A9DC09,0x662D09A1, 0xC4324633, 0xE85A1F02, 0x09F0BE8C, 0x4A99A025, 0x1D6EFE10, 0x1AB93D1D, 0x0BA5A4DF, 0xA186F20F, 0x2868F169, 0xDCB7DA83, 0x573906FE, 0xA1E2CE9B, 0x4FCD7F52, 0x50115E01, 0xA70683FA, 0xA002B5C4, 0x0DE6D027,0x9AF88C27, 0x773F8641, 0xC3604C06, 0x61A806B5, 0xF0177A28, 0xC0F586E0, 0x006058AA, 0x30DC7D62, 0x11E69ED7,0x2338EA63, 0x53C2DD94, 0xC2C21634, 0xBBCBEE56, 0x90BCB6DE, 0xEBFC7DA1, 0xCE591D76, 0x6F05E409, 0x4B7C0188,0x39720A3D, 0x7C927C24, 0x86E3725F, 0x724D9DB9, 0x1AC15BB4,
0xD39EB8FC, 0xED545578, 0xD83D7CD3,0x4DAD0FC4, 0x1E50EF5E, 0xA28514D9, 0x6C51133C, 0x6FD5C7E7, 0x362ABFCE, 0xDDC6C837,0xD79A3234, 0x670EFA8E, 0x406000E0 },
0x08FCA5B5, 0xB161E6F8, 0x56E14EC4, 0x92638212,
KS3 = { 0x3A39CE37, 0xD3FAF5CF, 0xABC27737, 0x5AC52D1B, 0x5CB0679E, 0x4FA33742, 0xD3822740, 0x99BC9BBE, 0xD5118E9D,0xBF0F7315, 0xD62D1C7E, 0xC700C47B, 0xB78C1B6B, 0x21A19045, 0xB26EB1BE, 0x6A366EB4, 0x5748AB2F, 0xBC946E79,0xC6A376D2, 0x6549C2C8, 0x530FF8EE, 0x468DDE7D, 0xD5730A1D, 0x4CD04DC6, 0x2939BBDB, 0xA9BA4650, 0xAC9526E8,0xBE5EE304, 0xA1FAD5F0, 0x6A2D519A, 0x63EF8CE2, 0x9A86EE22, 0xC089C2B8, 0x43242EF6, 0xA51E03AA, 0x9CF2D0A4,0x83C061BA, 0x9BE96A4D, 0x8FE51550, 0xBA645BD6, 0x2826A2F9, 0xA73A3AE1, 0x4BA99586, 0xEF5562E9, 0xC72FEFD3,0xF752F7DA, 0x3F046F69, 0x77FA0A59, 0x80E4A915, 0x87B08601, 0x9B09E6AD, 0x3B3EE593, 0xE990FD5A, 0x9E34D797,0x2CF0B7D9, 0x022B8B51, 0x96D5AC3A, 0x017DA67D, 0xD1CF3ED6, 0x7C7D2D28, 0x1F9F25CF, 0xADF2B89B, 0x5AD6B472,0x5A88F54C, 0xE029AC71, 0xE019A5E6, 0x47B0ACFD, 0xED93FA9B, 0xE8D3C48D, 0x283B57CC, 0xF8D56629, 0x79132E28,0x785F0191, 0xED756055, 0xF7960E44, 0xE3D35E8C, 0x15056DD4, 0x88F46DBA, 0x03A16125, 0x0564F0BD, 0xC3EB9E15,0x3C9057A2, 0x97271AEC, 0xA93A072A, 0x1B3F6D9B, 0x1E6321F5, 0xF59C66FB, 0x26DCF319, 0x7533D928, 0xB155FDF5,0x03563482, 0x8ABA3CBB, 0x28517711, 0xC20AD9F8, 0xABCC5167, 0xCCAD925F, 0x4DE81751, 0x3830DC8E, 0x379D5862, 0x9320F991, 0xEA7A90C2, 0xFB3E7BCE, 0x5121CE64, 0x774FBE32, 0xA8B6E37E, 0xC3293D46, 0x48DE5369, 0x6413E680,0xA2AE0810, 0xDD6DB224, 0x69852DFD, 0x09072166, 0xB39A460A, 0x6445C0DD, 0x586CDECF, 0x1C20C8AE, 0x5BBEF7DD,0x1B588D40, 0xCCD2017F, 0x6BB4E3BB, 0xDDA26A7E, 0x3A59FF45, 0x3E350A44, 0xBCB4CDD5, 0x72EACEA8, 0xFA6484BB,0x8D6612AE, 0xBF3C6F47, 0xD29BE463, 0x542F5D9E, 0xAEC2771B, 0xF64E6370, 0x740E0D8D, 0xE75B1357, 0xF8721671, 0xAF537D5D, 0x4040CB08, 0x4EB4E2CC, 0x34D2466A, 0x0115AF84, 0xE1B00428, 0x95983A1D, 0x06B89FB4, 0xCE6EA048,0x6F3F3B82, 0x3520AB82, 0x011A1D4B, 0x277227F8, 0x611560B1, 0xE7933FDC, 0xBB3A792B, 0x344525BD, 0xA08839E1, 0x51CE794B, 0x2F32C9B7,
0xA01FBAC9, 0xE01CC87E, 0xBCC7D1F6, 0xCF0111C3, 0xA1E8AAC7, 0x1A908749, 0xD44FBD9A,0xD0DADECB, 0xD50ADA38, 0x0339C32A, 0xC6913667, 0x8DF9317C, 0xE0B12B4F, 0xF79E59B7, 0x43F5BB3A, 0xF2D519FF,0x27D9459C, 0xBF97222C, 0x15E6FC2A, 0x0F91FC71, 0x9B941525, 0xFAE59361, 0xCEB69CEB, 0xC2A86459, 0x12BAA8D1,0xB6C1075E, 0xE3056A0C, 0x10D25065, 0xCB03A442, 0xE0EC6E0E, 0x1698DB3B, 0x4C98A0BE, 0x3278E964, 0x9F1F9532,0xE0D392DF, 0xD3A0342B, 0x8971F21E, 0x1B0A7441, 0x4BA3348C, 0xC5BE7120, 0xC37632D8, 0xDF359F8D, 0x9B992F2E,0xE60B6F47, 0x0FE3F11D, 0xE54CDA54, 0x1EDAD891, 0xCE6279CF, 0xCD3E7E6F, 0x1618B166, 0xFD2C1D05, 0x848FD2C5, 0xF6FB2299,0xF523F357, 0xA6327623, 0x93A83531, 0x56CCCD02, 0xACF08162, 0x5A75EBB5, 0x6E163697, 0x88D273CC, 0xDE966292,0x81B949D0, 0x4C50901B, 0x71C65614, 0xE6C6C7BD, 0x327A140A, 0x45E1D006, 0xC3F27B9A, 0xC9AA53FD,0x62A80F00, 0xBB25BFE2, 0x35BDD2F6, 0x71126905, 0xB2040222, 0xB6CBCF7C, 0xCD769C2B, 0x53113EC0, 0x1640E3D3,0x38ABBD60, 0x2547ADF0, 0xBA38209C, 0xF746CE76, 0x77AFA1C5, 0x20756060, 0x85CBFE4E, 0x8AE88DD8, 0x7AAAF9B0,0x4CF9AA7E, 0x1948C25C, 0x02FB8A8C, 0x01C36AE4, 0xD6EBE1F9, 0x90D4F869, 0xA65CDEA0, 0x3F09252D, 0xC208E69F,0xB74E6132, 0xCE77E25B, 0x578FDFE3, 0x3AC372E6 }; // ==================================== // Konsatan // ==================================== privatestaticfinalintROUNDS = 16; privatestaticfinalintBLOCK_SIZE = 8; // bytes = 64 bits privatestaticfinalintSBOX_SK = 256; privatestaticfinalintP_SZ = ROUNDS + 2; privatefinalint[] S0, S1, S2, S3; // s-boxes privatefinalint[] P; // p-array privateboolean doEncrypt = false; privatebyte[] workingKey = null; public BlowFish() {
S0 = newint[SBOX_SK]; S1 = newint[SBOX_SK]; S2 = newint[SBOX_SK]; S3 = newint[SBOX_SK]; P = newint[P_SZ]; } /** * Inisialisasi Blowfish cipher. * * @param Enkripsi . * @param key dibutuhkanuntukproseschiper. */ publicvoid init(boolean encrypting, byte[] key) { this.doEncrypt = encrypting; this.workingKey = key; setKey(this.workingKey); } public String getAlgorithmName() { return "Blowfish"; } publicfinalvoid transformBlock(byte[] in, int inOff, byte[] out, int outOff) { if (workingKey == null) { thrownew IllegalStateException("Blowfish Belum Diinisialisasi"); } if (doEncrypt) { encryptBlock(in, inOff, out, outOff); } else { decryptBlock(in, inOff, out, outOff); } } publicvoid reset() { }
publicint getBlockSize() { returnBLOCK_SIZE; } // ================================== // Implementasi Private // ================================== privateint F(int x) { return (((S0[(x >>> 24)] + S1[(x >>> 16) & 0xff]) ^ S2[(x >>> 8) & 0xff]) + S3[x & 0xff]); } /** * Implementasiperputaranenkripsiuntksetiapnilaipasanganpada table. */ privatevoid processTable(int xl, int xr, int[] table) { int size = table.length; for (int s = 0; s < size; s += 2) { xl ^= P[0]; for (int i = 1; i
* (1) Inisialisasi S-boxes dan P-array, dengan String fix, string iniberisi hexadecimal digits dari pi */ System.arraycopy(KS0, 0, S0, 0, SBOX_SK); System.arraycopy(KS1, 0, S1, 0, SBOX_SK); System.arraycopy(KS2, 0, S2, 0, SBOX_SK); System.arraycopy(KS3, 0, S3, 0, SBOX_SK); System.arraycopy(KP, 0, P, 0, P_SZ); /* * (2) Disni, XOR P[0] dengan 32 bits pertamadarikunci, * XOR P[1] dengan 32-bits keduadarikunci, danselanjutnyadarisemua bits kunci (hingga P[17]). * Perputaranberulangseluruh bit kuncihinggaselesai * P-array sebagai XOR-eddengan bit kunci */ int keyLength = key.length; int keyIndex = 0; for (int i = 0; i = keyLength) { keyIndex = 0; } } // XOR yangbarumembuat 32 bit ke P-array P[i] ^= data; } /* * (3) Enkripsisemua string kosongdenganalgoritma blowfish, * MenggunakanSubkey, sepertidigambarkanpadaproses 1 dan 2 * * (4) Timpa P1 dan P2 dengan output dariproses (3) *
* (5) Enkripsi output dari step (3) denganalgoritma blowfish, . * Denganmemodifikasisubkey. * * (6) Timpa P3 dan P4 dengan output pada step (5) * * (7) lanjutkanproses, timpasemuaelemendari P-array dan * selanjutnya S-boxes, dengan output berkelanjutan * prosesperubahan algoritma blowfish */ processTable(0, 0, P); processTable(P[P_SZ - 2], P[P_SZ - 1], S0); processTable(S0[SBOX_SK - 2], S0[SBOX_SK - 1], S1); processTable(S1[SBOX_SK - 2], S1[SBOX_SK - 1], S2); processTable(S2[SBOX_SK - 2], S2[SBOX_SK - 1], S3); } /* * Proses Enkripsi */ privatevoid encryptBlock(byte[] src, int srcIndex, byte[] dst, int dstIndex) { int xl = BytesTo32bits(src, srcIndex); int xr = BytesTo32bits(src, srcIndex + 4); xl ^= P[0]; for (int i = 1; i
xl ^= P[ROUNDS + 1]; for (int i = ROUNDS; i > 0; i -= 2) { xr ^= F(xl) ^ P[i]; xl ^= F(xr) ^ P[i - 1]; } xr ^= P[0]; Bits32ToBytes(xr, dst, dstIndex); Bits32ToBytes(xl, dst, dstIndex + 4); } privateint BytesTo32bits(byte[] b, int i) { return ((b[i] & 0xff) << 24) | ((b[i + 1] & 0xff) << 16) | ((b[i + 2] & 0xff) << 8) | ((b[i + 3] & 0xff)); } privatevoid Bits32ToBytes(int in, byte[] b, int offset) { b[offset + 3] = (byte) in; b[offset + 2] = (byte) (in >> 8); b[offset + 1] = (byte) (in >> 16); b[offset] = (byte) (in >> 24); } } 4. BlowfishClass.java package com.blowfish.sms; import java.security.GeneralSecurityException; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; public class BlowfishClass { private final static String ALGORITM = "Blowfish"; private final static String KEY = ""; private final static String PLAIN_TEXT = ""; public BlowfishClass(){ }
/*public void run(View v) { try { byte[] encrypted = encrypt(KEY, PLAIN_TEXT); Log.i("FOO", "Encrypted: " + bytesToHex(encrypted)); String decrypted = decrypt(KEY, encrypted); Log.i("FOO", "Decrypted: " + decrypted); } catch (GeneralSecurityException e) { e.printStackTrace(); } } */ public byte[] encrypt(String key, GeneralSecurityException { BlowFish blowfish=new BlowFish(); SecretKey secret_key = new ALGORITM);
String
plainText)
throws
SecretKeySpec(key.getBytes(),
Cipher cipher = Cipher.getInstance(ALGORITM); cipher.init(Cipher.ENCRYPT_MODE, secret_key); return cipher.doFinal(plainText.getBytes()); } public String decrypt(String GeneralSecurityException { SecretKey ALGORITM);
secret_key
key,
=
byte[]
new
encryptedText)
SecretKeySpec(key.getBytes(),
Cipher cipher = Cipher.getInstance(ALGORITM); cipher.init(Cipher.DECRYPT_MODE, secret_key); byte[] decrypted = cipher.doFinal(encryptedText); return new String(decrypted); } public static byte[] hexStringToByteArray(String s) { int len = s.length(); byte[] data = new byte[len/2]; for(int i = 0; i < len; i+=2){
throws
data[i/2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) + Character.digit(s.charAt(i+1), 16)); } return data; } final protected static char[] hexArray {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; public static String byteArrayToHexString(byte[] bytes) { char[] hexChars = new char[bytes.length*2]; int v; for(int j=0; j < bytes.length; j++) { v = bytes[j] & 0xFF; hexChars[j*2] = hexArray[v>>>4]; hexChars[j*2 + 1] = hexArray[v & 0x0F]; } return new String(hexChars); } } 5. Help.java package com.blowfish.sms; import com.blowfish.sms.R; import android.app.Activity; import android.os.Bundle; public class Help extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_help_blowfish); }
} 6. KeluarSMS.java package com.blowfish.sms; import java.security.GeneralSecurityException; import android.app.Activity; import android.app.AlertDialog; import android.content.ContentResolver;
=
import android.content.DialogInterface; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.speech.tts.TextToSpeech; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.EditText; import android.widget.ListView; import android.widget.SimpleCursorAdapter; import android.widget.TextView; public class KeluarSMS extends Activity implements OnClickListener{ TextView lblMsg, lblNo; ListView lvMsg; TextToSpeech tts; BlowfishClass blowfish = new BlowfishClass(); // Cursor Adapter SimpleCursorAdapter adapter; String baca; String nomor; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_masuk_blowfish); lvMsg = (ListView) findViewById(R.id.lvMsg); Uri bedong = Uri.parse("content://sms/sent"); setList(bedong); } AdapterView.OnItemClickListener AdapterView.OnItemClickListener() {
klikIn
=
new
@Override public void onItemClick(AdapterView> parent, final View view,int position, long id) { Cursor c=adapter.getCursor(); baca = c.getString(c.getColumnIndex("body")); nomor= c.getString(c.getColumnIndex("address")); setDialog(); } }
@Override public void onClick(View v) { /*if (v == btnInbox) { Uri bedong = Uri.parse("content://sms/inbox"); setList(bedong); } if (v == btnSent) { Uri bedong = Uri.parse("content://sms/sent"); setList(bedong); } if (v == btnDraft) { Uri bedong = Uri.parse("content://sms/draft"); setList(bedong); }*/ } @SuppressWarnings("deprecation") public void setList(Uri entry){ // List required columns String[] reqCols = new String[] { "_id", "address", "body" }; // Get Content Resolver object, which will deal with Content // Provider ContentResolver cr = getContentResolver(); // Fetch Sent SMS Message from Built-in Content Provider Cursor c = cr.query(entry, reqCols, null, null, null); // Attached Cursor with adapter and display in listview adapter = new SimpleCursorAdapter(this, R.layout.row, c,new String[] { "body", "address" }, new int[] {R.id.lblMsg, R.id.lblNumber }); lvMsg.setAdapter(adapter); lvMsg.setOnItemClickListener(klikIn); } public void setDialog(){ AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Blowfish SMS"); builder.setMessage("Dekripsikan Pesan Ini?"); builder.setPositiveButton("YES", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { setDialogPassword(); dialog.dismiss(); } });
builder.setNegativeButton("NO", DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); AlertDialog alert = builder.create(); alert.show(); }
new
protected void setDialogPassword() { // get prompts.xml view LayoutInflater layoutInflater = LayoutInflater.from(KeluarSMS.this); View promptView = layoutInflater.inflate(R.layout.activity_dialog_blowfish, null); AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(KeluarSMS.this); alertDialogBuilder.setView(promptView); final EditText editText = (EditText) promptView.findViewById(R.id.edittext); // setup a dialog window alertDialogBuilder.setCancelable(false).setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { String Pass=editText.getText().toString(); String dekripsi=""; try { byte[] decrypt=blowfish.hexStringToByteArray(baca); dekripsi = blowfish.decrypt(Pass,decrypt); } catch (GeneralSecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } setDialogDekripsi(dekripsi); } }) .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); }
}); // create an alert dialog AlertDialog alert = alertDialogBuilder.create(); alert.show(); } public void setDialogDekripsi(String entry){ AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Blowfish SMS"); builder.setMessage(entry); builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); AlertDialog alert = builder.create(); alert.show(); } @Override public void onDestroy() { // Shutdown speech yoyoi! if (tts != null) { tts.stop(); tts.shutdown(); } super.onDestroy(); } }
7. Main.java package com.blowfish.sms; import com.blowfish.sms.R; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ListView;
public class Main extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_blowfish); final ListView listview = (ListView) findViewById(R.id.listView1); final String[] values = new String[] {"Pesan Baru","Pesan Masuk","Pesan Keluar","Tentang Aplikasi","Panduan Aplikasi","Tutup"}; final MyAdapter adapter = new MyAdapter(this, android.R.layout.simple_list_item_1, values); listview.setAdapter(adapter); listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView> parent, final View view,int position, long id) { String usersChoice = values[position]; //Log.d("", "Menu "+usersChoice +" = "+position); if (position==0){ Intent myIntent = new Intent("android.intent.action.BNSMS"); startActivity(myIntent); } if (position==1){ Intent myIntent = new Intent("android.intent.action.BMBOX"); startActivity(myIntent); } if (position==2){ Intent myIntent = new Intent("android.intent.action.BKBOX"); startActivity(myIntent); } if (position==3){ Intent myIntent = new Intent("android.intent.action.BABOUT"); startActivity(myIntent); } if (position==4){ Intent myIntent = new Intent("android.intent.action.BHELP"); startActivity(myIntent); }
if (position==5){ android.os.Process.killProcess(android.os.Process.myPid()); System.exit(1); } } }); } public void onBackPressed() { super.onBackPressed(); android.os.Process.killProcess(android.os.Process.myPid()); System.exit(0); } } 8. MasukSMS.java package com.blowfish.sms; import java.io.UnsupportedEncodingException; import java.security.GeneralSecurityException; import java.util.Locale; import com.blowfish.sms.R; import android.app.Activity; import android.app.AlertDialog; import android.content.ContentResolver; import android.content.DialogInterface; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.speech.tts.TextToSpeech; import android.util.Base64; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.SimpleCursorAdapter; import android.widget.TextView; import android.widget.Toast; public class MasukSMS extends Activity implements OnClickListener{
TextView lblMsg, lblNo; ListView lvMsg; TextToSpeech tts; BlowfishClass blowfish = new BlowfishClass(); // Cursor Adapter SimpleCursorAdapter adapter; String baca; String nomor; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_masuk_blowfish); lvMsg = (ListView) findViewById(R.id.lvMsg); Uri bedong = Uri.parse("content://sms/inbox"); setList(bedong); }
AdapterView.OnItemClickListener klikIn = new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView> parent, final View view,int position, long id) { Cursor c=adapter.getCursor(); baca = c.getString(c.getColumnIndex("body")); nomor= c.getString(c.getColumnIndex("address")); setDialog(); } }; @Override public void onClick(View v) { /*if (v == btnInbox) { Uri bedong = Uri.parse("content://sms/inbox"); setList(bedong); } if (v == btnSent) { Uri bedong = Uri.parse("content://sms/sent"); setList(bedong); }
if (v == btnDraft) { Uri bedong = Uri.parse("content://sms/draft"); setList(bedong); }*/ } @SuppressWarnings("deprecation") public void setList(Uri entry){ // List required columns String[] reqCols = new String[] { "_id", "address", "body" }; // Get Content Resolver object, which will deal with Content // Provider ContentResolver cr = getContentResolver(); // Fetch Sent SMS Message from Built-in Content Provider Cursor c = cr.query(entry, reqCols, null, null, null); // Attached Cursor with adapter and display in listview adapter = new SimpleCursorAdapter(this, R.layout.row, c,new String[] { "body", "address" }, new int[] {R.id.lblMsg, R.id.lblNumber }); lvMsg.setAdapter(adapter); lvMsg.setOnItemClickListener(klikIn); } public void setDialog(){ AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Blowfish SMS"); builder.setMessage("Dekripsikan Pesan Ini?"); builder.setPositiveButton("YES", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { setDialogPassword(); dialog.dismiss(); } }); builder.setNegativeButton("NO", DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); AlertDialog alert = builder.create();
new
alert.show(); }
protected void setDialogPassword() { // get prompts.xml view LayoutInflater layoutInflater = LayoutInflater.from(MasukSMS.this); View promptView = layoutInflater.inflate(R.layout.activity_dialog_blowfish, null); AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(MasukSMS.this); alertDialogBuilder.setView(promptView); final EditText editText = (EditText) promptView.findViewById(R.id.edittext); // setup a dialog window alertDialogBuilder.setCancelable(false).setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { String Pass=editText.getText().toString(); String dekripsi=""; try { byte[] decrypt=blowfish.hexStringToByteArray(baca); dekripsi = blowfish.decrypt(Pass,decrypt); } catch (GeneralSecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } setDialogDekripsi(dekripsi); } }) .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); // create an alert dialog AlertDialog alert = alertDialogBuilder.create(); alert.show();
} public void setDialogDekripsi(String entry){ AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Blowfish SMS"); builder.setMessage(entry); builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); AlertDialog alert = builder.create(); alert.show(); } @Override public void onDestroy() { // Shutdown speech yoyoi! if (tts != null) { tts.stop(); tts.shutdown(); } super.onDestroy(); } } 9. MyAdapter.java package com.blowfish.sms; import java.util.HashMap; import android.content.Context; import android.graphics.Color; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.TextView; public class MyAdapter extends ArrayAdapter<String> { HashMap<String, Integer> mIdMap = new HashMap<String, Integer>(); public MyAdapter(Context context, int textViewResourceId,String[] objects) {
super(context, textViewResourceId, objects); for (int i = 0; i < objects.length; ++i) { mIdMap.put(objects[i], i); } } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = super.getView(position, convertView, parent); TextView text = (TextView) view.findViewById(android.R.id.text1); text.setTextColor(Color.WHITE); return view; } @Override public long getItemId(int position) { String item = getItem(position); return mIdMap.get(item); } @Override public boolean hasStableIds() { return true; } } 10. SendSMS.java package com.blowfish.sms; import java.security.GeneralSecurityException; import android.app.Activity; import android.os.Bundle; import android.telephony.gsm.SmsManager; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class SendSMS extends Activity { Button button; EditText editPhoneNum; EditText editSMS; EditText editPass;
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_send_blowfish); button = (Button) findViewById(R.id.button); editPhoneNum = (EditText) findViewById(R.id.editPhoneNum); editSMS = (EditText) findViewById(R.id.editSMS); editPass = (EditText) findViewById(R.id.EditText01); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String phoneNo editPhoneNum.getText().toString(); //#### String Pass=editPass.getText().toString(); String plaintext=editSMS.getText().toString();
=
BlowfishClass blowfish = new BlowfishClass(); byte[] encrypt=null; try { encrypt = blowfish.encrypt(Pass,plaintext); } catch (GeneralSecurityException e1) {e1.printStackTrace();} String enkripsi=""; enkripsi =blowfish.byteArrayToHexString(encrypt); /*String dekripsi=""; try { byte[] decrypt=blowfish.hexStringToByteArray(enkripsi); dekripsi = blowfish.decrypt(Pass,decrypt); } catch (GeneralSecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } Log.d(null, "Teks = "+plaintext); Log.d(null, "Enkripsi = "+enkripsi); Log.d(null, "Dekripsi = "+dekripsi); */ try { SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneNo, null, enkripsi, null, null); Toast.makeText(getApplicationContext(), "SMS Enkripsi Terkirim!",Toast.LENGTH_LONG).show(); } catch (Exception e) { Toast.makeText(getApplicationContext(),"SMS Gagal Terkirim, Silahkan dicoba lagi!",Toast.LENGTH_LONG).show(); e.printStackTrace(); } } }); } } 11. Splash.java package com.blowfish.sms; import com.blowfish.sms.R; public class Splash extends Activity{ TextView text1; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_splash_blowfish); /* text1=(TextView) findViewById(R.id.textView1); Typeface type = Typeface.createFromAsset(getAssets(),"font/COOPBL.ttf"); text1.setTypeface(type);*/ Thread logoTimer = new Thread() { public void run(){ try{ int logoTimer = 0; while(logoTimer < 3000){ sleep(100); logoTimer = logoTimer +100; }; startActivity(new Intent("android.intent.action.BMENU")); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally{ finish(); } } };
logoTimer.start(); } }