• Tidak ada hasil yang ditemukan

Penerapan Kriptografi RC6 Pada Pengiriman dan Penerimaan Pesan Email di Android

N/A
N/A
Protected

Academic year: 2016

Membagikan "Penerapan Kriptografi RC6 Pada Pengiriman dan Penerimaan Pesan Email di Android"

Copied!
102
0
0

Teks penuh

(1)

PENERAPAN KRIPTOGRAFI RC 6 PADA PENGIRIMAN DAN

PENERIMAAN PESAN EMAIL DI ANDROID

TUGAS AKHIR

MUHAMMAD TP FAZIL

112406204

PROGRAM STUDI D3 TEKNIK INFORMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA UTARA

(2)

PERSETUJUAN

Judul : Penerapan Kriptografi RC6 Pada Pengiriman dan Penerimaan Pesan Email di Android

Kategori : Tugas Akhir

Nama : Muhammad TP Fazil

Nomor Induk Mahasiswa : 112406204

Program Studi : D3 Teknik Informatika Departemen : Matematika

Fakultas : Matematika Dan Ilmu Pengetahuan Alam Universitas Sumatera Utara

Disetujui di Medan, Juli 2014

Disetujui Oleh:

Program Studi D3 Teknik Informatika Pembimbing FMIPA USU

Ketua,

Dr. Elly Rosmaini, M.Si Asima Manurug, S.Si, M.Si

(3)

PERNYATAAN

PENERAPAN KRIPTOGRAFI RC6 PADA PENGIRIMAN DAN PENERIMAAN PESAN EMAIL DI ANDROID

TUGAS AKHIR

Saya mengakui bahwa tugas akhir ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.

Medan, Juni 2014

(4)

PENGHARGAAN

Puji dan syukur penulis panjatkan kepada Tuhan Yang Maha Pemurah dan Maha Penyayang, dengan limpah karunia-Nya Penulis dapat menyelesaikan penysunan Tugas Akhir ini dengan judul Penerapan Kriptografi RC6 Pada Pengiriman dan Penerimaan Pesan Email di Android. .

(5)

ABSTRAK

Salah satu bentuk komunikasi yang sering dilakukan melalui telepon genggam adalah dengan menggunakan layanan pesan singkat atau yang biasa disebut SMS (Short Message Service). Layanan SMS sering dipergunakan karena layanan ini terdapat pada setiap ponsel dengan berbagai macam provider seluler.Selain itu, biaya yang murah juga menjadi alasan utama pengguna ponsel menggunakan layanan ini. Terkadang ada kalanya informasi yang disampaikan melalui layanan SMS bersifat rahasia. Kenyataannya, saat ini layanan SMS pada dasarnya belum bisa menjamin kerahasiaan pesan. Dari kebutuhan akan kerahasiaan pesan, maka diperlukan suatu sistem yang dapat menjaga kerahasiaan isi pesan. Kriptografi merupakan salah satu cara untuk menjaga kerahasiaan tersebut. Membangun perangkat lunak yang dapat mengenkripsi dan mendekripsi pesan diharapkan dapat mengatasi masalah diatas. Sistem manajemen kunci yang baik juga akan menambah keamanan dan kenyamanan pengguna layanan SMS dalam berkomunikasi. Dengan penerapan kriptografi dan sistem manajemen kunci diharapkan pengguna layanan SMS dapat mengamankan isi pesan yang dikirim.

(6)

ABSTRACT

One way of communication that is often done via mobile phone is by using the short message service or commonly known as SMS (Short Message Service). SMS services are often used because this service are on every mobile phone with a variety of cellular provider. In addition, the low cost is also a major reason for the mobile users to use the service. Sometimes, information is conveyed through SMS services are confidential. in reality, the current SMS service basically can not guarantee the confidentiality of the message. Of the need for confidentiality of a message, we need a system that can maintain the confidentiality of message content. Cryptography is one way to maintain the secrecy. Build software that can encrypt and decrypt messages is expected to overcome the above problems. Good key management system will also increase the safety and convenience of SMS users to communicate.Implementation of cryptography and key management systems are expected to be able to secure the SMS service users content of messages sent.

(7)
(8)

BAB 4 IMPLEMENTASI SISTEM

4.1 Pengertian dan Implementasi Sistem 33

4.2 Komponen Utama Dalam Implementasi Sistem 34

4.2.1 Perangkat Keras (Hardware) 34

4.2.2 Perangkat Lunak (Software) 34

4.2.3 Tenaga Pelaksana (Brainware) 35

4.3 Uji Program 36

4.3.1 Halaman Utama 36

4.3.2 Halaman Menulist 36

4.3.3 Halaman Form Pengirim 37

4.3.4 Halaman Tampilan Gmail 38

4.3.5 Halaman Form Penerima 39

BAB 5 KESIMPULAN DAN SARAN 5.1 Kesimpulan 41

5.2 Saran 43 Daftar Pustaka

(9)

DAFTAR GAMBAR

Gambar 1 Tabel Kunci SBox RC6 23

Gambar 2 Form Pengirim Pesan Gmail 25

Gambar 3 Form Penerima Pesan 26

Gambar 4 Form Pengirim Dengan Isi Pesan 28

Gambar 5 Tampilan Pesan Enkripsi di Dalam Gmail 29

Gambar 6 Tampilan Pesan di Dalam Form Penerima 29

Gambar 7 Flowchart Kriptografi RC6 31

Gambar 8 Data Flow Diagram 32

Gambar 9 Tampilan Form Menu 36

Gambar 10 Tampilan Form Menulist 37

Gambar 11 Tampilan Form Pengirim 38

Gambar 12 Tampilan Pesan Enkripsi di Dalam Gmail 39

(10)

DAFTAR LAMPIRAN

(11)
(12)

ABSTRAK

Salah satu bentuk komunikasi yang sering dilakukan melalui telepon genggam adalah dengan menggunakan layanan pesan singkat atau yang biasa disebut SMS (Short Message Service). Layanan SMS sering dipergunakan karena layanan ini terdapat pada setiap ponsel dengan berbagai macam provider seluler.Selain itu, biaya yang murah juga menjadi alasan utama pengguna ponsel menggunakan layanan ini. Terkadang ada kalanya informasi yang disampaikan melalui layanan SMS bersifat rahasia. Kenyataannya, saat ini layanan SMS pada dasarnya belum bisa menjamin kerahasiaan pesan. Dari kebutuhan akan kerahasiaan pesan, maka diperlukan suatu sistem yang dapat menjaga kerahasiaan isi pesan. Kriptografi merupakan salah satu cara untuk menjaga kerahasiaan tersebut. Membangun perangkat lunak yang dapat mengenkripsi dan mendekripsi pesan diharapkan dapat mengatasi masalah diatas. Sistem manajemen kunci yang baik juga akan menambah keamanan dan kenyamanan pengguna layanan SMS dalam berkomunikasi. Dengan penerapan kriptografi dan sistem manajemen kunci diharapkan pengguna layanan SMS dapat mengamankan isi pesan yang dikirim.

(13)

ABSTRACT

One way of communication that is often done via mobile phone is by using the short message service or commonly known as SMS (Short Message Service). SMS services are often used because this service are on every mobile phone with a variety of cellular provider. In addition, the low cost is also a major reason for the mobile users to use the service. Sometimes, information is conveyed through SMS services are confidential. in reality, the current SMS service basically can not guarantee the confidentiality of the message. Of the need for confidentiality of a message, we need a system that can maintain the confidentiality of message content. Cryptography is one way to maintain the secrecy. Build software that can encrypt and decrypt messages is expected to overcome the above problems. Good key management system will also increase the safety and convenience of SMS users to communicate.Implementation of cryptography and key management systems are expected to be able to secure the SMS service users content of messages sent.

(14)

BAB 1 PENDAHULUAN

1.1 Latar belakang

Kriptografi merupakan suatu seni dimana sebuah data diamankan melalui proses penyandian. Pada permulaannya kriptografi digunakan untuk mengamankan sebuah data berupa teks. Bermacam-macam algoritma yang digunakan dalam mengamankan sebuah data diantaranya adalah DES, RC6, IDEA, RSA dan masih banyak lagi algoritma kriptografi lainnya. Pada proses pembuatan tugas akhir ini data yang akan diamankan adalah berupa data gambar yang berekstensi bitmap. Data gambar merupakan data yang dapat digolongkan sebagai data pribadi. Salah satu cara mengamankan data gambar adalah dengan algoritma kriptografi. Pada tugas akhir ini algoritma kriptografi yang dipakai adalah algoritma RC6. Pengamanan data gambar dengan kriptografi memiliki perbedaan yang dapat menjadikan kesulitan tersendiri. Dengan adanya permasalahan tersebut maka dalam tugas akhir ini dilakukan pengujian pengamanan data gambar dengan algoritma RC6.

Oleh karena itu, penulis mengajukan sebuah proposal yang berjudul

“PENERAPAN KRIPTOGRAFI RC6 PADA PENGIRIMAN DAN PENERIMAAN

(15)

1.2Rumusan Masalah

Keamanan dalam berkomunikasi adalah salah satu aspek terpenting dari kehidupan bersosialisasi. Seseorang memberikan informasi hanya kepada pihak yang berhak menerima informasi tersebut. Penyandian pada data yang akan ditujukan dapat memberikan kemananan terhadap data. Adapun rumusan masalah yang akan dibahas pada penulisan tugas Akhir ini adalah:

1. Bagaimana menyandikan data gambar menggunakan algoritma RC6?

2. Apakah data gambar setelah proses dekripsi mengalami perubahan yang signifikan?

1.3Batasan Masalah

Dengan adanya keterbatasan yang dimiliki oleh penulis maka sistem ini dibuat memiliki keterbatasan, diantaranya:

a. Program ini berbasis desktop

b. Program ini menggunakan algoritma RC6 dalam penyandian data gambar c. Pembuatan program menggunakan bahasa pemrograman Java

d. Pada Proses Pembuatan Kunci nilai dari p dan q terdapat pada range 1- 100.

1.4Tujuan Penelitian

(16)

1.5Metodologi Penelitian

Metodologi penelitian yang digunakan dalam menyelesaikan Tugas Akhir ini adalah: 1.Studi Pustaka dengan membaca dan mengumpulkan informasi dan pengetahuan

tambahan mengenai Kriptografi, Algoritma RC6, Pemrograman Bahasa Java dan pengetahuan lainnya

2.Perancangan, pembuatan, dan pengujian program.

1.6Sistematika Penulisan

Untuk mempermudah penulisan tugas akhir ini, penulis membuat suatu sistematika penulisan yang terdiri dari :

BAB 1 PENDAHULUAN

Bab ini merupakan berisikan latar belakang masalah, maksud dan tujuan, serta metode penelitian.

BAB 2 LANDASAN TEORI

Pada bab ini dijelaskan teori-teori singkat tentang hal-hal yang berhubungan dengan judul dan pembahasan bahasa pemrograman Java

BAB 3 PERANCANGAN SISTEM

Didalam bab ini dijelaskan dan diuraikan tentang pembuatan serta perancangan Aplikasi.

BAB 4 IMPLEMENTASI SISTEM

(17)

BAB 5 KESIMPULAN DAN SARAN

(18)
(19)

BAB 2 DASAR TEORI

2.1 Pengertian Kriptografi

Kriptografi, secara umum adalah ilmu dan seni untuk menjaga kerahasiaan berita. Selain pengertian tersebut terdapat pula pengertian ilmu yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan data, keabsahan data, integritas data, serta autentikasi data. Tidak semua aspek keamanan informasi ditangani oleh kriptografi.

Ada empat tujuan mendasar dari ilmu kriptografi ini yang juga merupakan aspek keamanan informasi yaitu :

1. Kerahasiaan, adalah layanan yang digunakan untuk menjaga isi dari informasi dari siapapun kecuali yang memiliki otoritas atau kunci rahasia untuk membuka/mengupas informasi yang telah disandi.

2. Integritas data, adalah berhubungan dengan penjagaan dari perubahan data secara tidak sah. Untuk menjaga integritas data, sistem harus memiliki kemampuan untuk mendeteksi manipulasi data oleh pihak-pihak yang tidak berhak, antara lain penyisipan, penghapusan, dan pensubsitusian data lain kedalam data yang sebenarnya.

(20)

melalui kanal harus diautentikasi keaslian, isi datanya, waktu pengiriman, dan lain-lain.

4. Non-repudiasi., atau nirpenyangkalan adalah usaha untuk mencegah terjadinya penyangkalan terhadap pengiriman/terciptanya suatu informasi oleh yang mengirimkan/membuat.

2.1.1 Kriptografi Modern

Kriptografi modern merupakan suatu perbaikan yang mengacu pada kriptografi klasik. Pada kriptogarfi modern terdapat berbagai macam algoritma yang dimaksudkan untuk mengamankan informasi yang dikirim melalui jaringan komputer. Algoritma kriptografi modern terdiri dari tiga bagian:

1. Algoritma Simetris

Algoritma simetris adalah algoritma yang menggunakan kunci yang sama untuk enkripsi dan dekripsinya. Algoritma kriprografi simetris sering disebut algoritma kunci rahasia, algoritma kunci tunggal, atau algoritma satu kunci, dan mengharuskan pengirim dan penerima menyetujui suatu kunci tertentu. Kelebihan dari algoritma kriprografi simetris adalah waktu proses untuk enkripsi dan dekripsi relatif cepat. Hal ini disebabkan efesiensi yang terjadi pada pembangkit kunci. Karena prosesnya relative cepat maka algoritma ini tepat untuk digunakan pada sistem komunikasi digital secara real timeseperti GSM.

Contoh fazil ingin mengirim pesan x dengan aman menggunakan saluran umum

kepada Bob. fazil menggunakan kunci xƠ yang sebelumnya telah disepakati antara

(21)

kode yang diterima dengan kunci yang sama dengan yang digunakan untuk memperoleh akses ke pesan yang diterima. Begitu juga sebaliknya.

Aplikasi dari algoritma simetris digunakan oleh beberapa algoritma di bawah in

2. Algoritma Asimetris

Algoritma Asimetris adalah pasangan kunci kriptografi yang salah satunya digunakan untuk proses enkripsi dan satu lagi lagi deskripsi. Semua orang yang mendapatkan kunci publik dapat menggunakannya untuk mengenkripsi suatu pesan, sedangkan hanya satu orang saja yang memiliki rahasia itu, yang dalam hal ini kunci rahasia, untuk melakukan pembongkaran terhadap kode yang dikirim untuknya. Contoh algoritma terkenal yang menggunakan kunci asimetris adalah RSA (merupakan singkatan dari nama penemunya, yakni Rivest, Shamir dan Adleman).

3. Algoritma Hibrida

Algoritma hibrida adalah algoritma yang memanfaatkan dua tingkatan kunci, yaitu kunci rahasia (simetri) – yang disebut juga session key (kunci sesi) – untuk enkripsidata dan pasangan kunci rahasia – kunci publik untuk pemberian tanda tangan digital serta melindungi kunci simetri.

2.2 Bahasa Pemrograman Java

(22)

umumnya dikompilasi ke dalam p-code (bytecode) dan dapat dijalankan pada berbagai Mesin Virtual Java (JVM). Java merupakan bahasa pemrograman yang bersifat umum/non-spesifik (general purpose), dan secara khusus didisain untuk memanfaatkan dependensi implementasi seminimal mungkin. Karena fungsionalitasnya yang memungkinkan aplikasi java mampu berjalan di beberapa platform sistem operasi yang berbeda, java dikenal pula dengan slogannya, "Tulis sekali, jalankan di mana pun". Saat ini java merupakan bahasa pemrograman yang

paling populer digunakan, dan secara luas dimanfaatkan dalam pengembangan berbagai jenis perangkat lunak aplikasi ataupun aplikasi berbasis web.

2.2.1 Perkembangan Bahasa Pemrograman JAVA 2.2.1.1 Java versi 1

Pada tahun 1996 java versi awal diluncurkan yang sudah merupakan versi release sehingga dinamakan Java Versi 1.0. Java versi ini sudah menyertakan banyak paket standar awal yang terus dikembangkan pada versi selanjutnya, diantaranya adalah:

1.Java.lang, yang diperuntukkan kelas elemen elemen dasar.

2.Java.io, yang diperuntukkan kelas input dan output, termasuk penggunaan berkas.

3.Java.util diperuntukkan kelas pelengkap seperti kelas terstruktur data dan kelas kelas penggalan.

4.Java.net ditujukan untuk kelas TCP/IP, yang memungkinkan berkomunikasi dengan computer lain menggunakan jaringan TCP/IP.

(23)

6.Java.applet, kelas dasar aplikasi antar muka untuk diterapkan pada penjelajah web

2.2.1.2 Tentang Java versi 1

1. Pada produksi pertama Java, JDK (Java Development Kit ) yang digunakan adalah JDK versi 1.0.2

2. JDK merupakan sekumpulan program dan Library java yang digunakan untuk menjalankan dan mengembangkan program Java.

3. Pada awal lirisnya, JDK 1.0.2 membuat gebrakan dalam dunia web yaitu Java applet.

4. JDK 1.0.2 juga mengenalkan Java AWT (Abstract Windowing Toolkit) yang digunakan untuk membuat aplikasi berbasis tampilan window/GUI (Graphical User Interface).

2.2.2 JDK (Java Development Kit)

Merupakan produk dari Sun Microsystems yang ditujukan untuk pengembang Java. Sejak diperkenalkannya Java, telah jauh SDK Java yang paling banyak digunakan. Pada tanggal 17 November 2006, Sun mengumumkan bahwa akan dirilis di bawah GNU General Public License (GPL), sehingga membuat perangkat lunak bebas. Hal ini terjadi sebagian besar pada tanggal 8 Mei 2007 Sun kontribusi kode sumber untuk JDK Open.

(24)

Sun Microsystem telah meluncurkan superset dari JRE dan diberi nama Java 2 SDK, yang sering disebut JDK.Dalam JDK ini terdapat beberapa komponen pengembangan Java, seperti:Java Compiler, Javadoc, Jar dan debugger. Salah satu kelebihan yang ditawarkan oleh JRE adalah kesalahan-kesalahan (exceptions) yang terjadi tidak akan membuat sistem menjadi crash atau hang. Kelebihan lainnya adalah terdapatnya komponen yang mampu merekam secara tepat waktu segala kesalahan yang terjadi ke dalam memori. Komponen-komponen ini diberi nama Automated Exception Handling. Selain komponen diatas terdapat beberapa komponen lainnya antara lain :

1.Library Java mengkompilasi kode byte dari source code yang dibentuk oleh Implementator JRE untuk mendukung pengembangan aplikasi dalam Java, beberapa contoh Library dalam Java :

1. The core library, yang berisikan:

a. Library koleksi yang mengimplementasikan struktur data seperti List, Dictionaries, trees dan sets.

b. Library proses XML (Parsing, Transforming, Validaying). c. Sekuritas

d. Library Internasionalisasi dan lokalisasi. 2. Library Terintegrasi

3. Library User Interface yang mencakup

a. Abstract Windowing Toolkit (AWT), yang menyediakan komponen GUI untuk menggambarkan komponen tersebut dan membuat komponen tersebut mampu menangani event handling.

b. Library Swing.

(25)

2.Implementasi Ketergantungan Platform Java Virtual Machine (JVM). 3.Plug-ins yang menjalankan applet untuk dijalankan di web browser.

4.Java Web Start, yang menjalankan aplikasi Java untuk didistribusikan secara efisien ke pengguna internet.

5.Lisensi dan dokumentasi.

2.2.2.1 Pada Java versi 2, java dibagi menjadi 3 kategori:

1.Java 2 Standard Edition (J2SE), yang digunakan untuk menegmbangkan aplikasi-aplikasi berbasis desktop dan applet (aplikasi Java yang dapat dijalankan di dalam browser web).

2.Java 2 Enterprise Edition (J2EE), merupakan superset dari J2SE yang memperbolehkan kita untuk mengembangkan aplikasi desktop berskala besar (enterprise), yaitu dengan melakukan pembuatan aplikasi-aplikasi di sisi server dengan menggunakan EJBs (Enterprise JavaBeans), aplikasi web dengan menggunakan Servlet dan JSP (Java Server Pages) dan teknologi Iainnya seperti CORBA (Common Object Request Broker Architecture) dan XML (eXtensibIe Markup Language).

(26)

2.3 ALGORITMA RC6

Algoritma RC6 merupakan algoritma sederhana, fungsi yang digunakan merupakan fungsi yang sederhana dan hanya mengandalkan fungsi iterated cipher untuk keamanan. Tampilan hasil enkripsi dan data hasil enkripsi yang diterima harus diperhatikan, hal ini dikarenakan pada data hasil enkripsi, setiap karakternya akan memiliki panjang 8 bit, sedangkan sebagian telepon hanya dapat menampilkan karakter dengan panjang 7 bit. Dengan demikian dalam penerapan algoritma RC6 pada SMS karakter karakter yang akan dienkripsi diubah kedalam nilai ASCII, dimana nilai karakter dalam table ASCII ditambah table karakter special adalah 0 sampai dengan 255, artinya satu karakter ASCII akan diwakili oleh 8 bit, dimana 28=256. Sehingga dalam 1 blok plainteks (32 bit) akan menyimpan 4 karakter dan setiap kali iterasi, makan akan diambil 16 karakter dari plainteks.

Apabila panjang plainteks atau panjang kunci kurang dari 16 karakter, maka akan dilakukan padding, yaitu dengan menampilkan bit 0 (nol) diakhir teks, sehingga panjang teks mencukupi 16 karakter. Layar pada sebagian besar telepon selular hanya dapat menampilkan karakter dengan panjang 7 bit dan pesan yang telah terenkripsi akan berbentuk binary, sehingga layar tidak akan menampilkan dengan semestinya. Oleh karena itu pada aplikasi yang akan dibangun untuk menampilkan pesan yang telah terenkripsi , ditambahkan informasi karakter yang terdapat pesan tersebut dengan format heksadesimal agar dapat ditampilkan dilayar dan informasinya lebih terbaca.

(27)

beragam lebih dari 1 karakter (8 bit). Langkah-langkah algoritma RC6 dalam pelaksanaan tugas akhir ini akan dikelompokkan ke dalam beberapa bagian, yaitu:

1.Pembangkit sub kunci

Kunci dari pengguna ini akan dimasukkan oleh pengguna pada saat akan melakukan proses enkripsi dan dekripsi. Kunci ini memiliki tipe data string dan memiliki panjang 16 byte (16 karakter).

2.Baca masukkan untuk proses enkripsi

Yang dilakukan pada tahapan ini adalah membaca teks yang menjadi masukan pada proses enkripsi, yaitu field dari aplikasi enkripsi SMS. Pada proses enkripsi pesan, field-nya adalah isi pesan

3.Enkripsi meliputi whitening awal, iterasi dan whitening akhir. 4.Baca masukkan untuk proses dekripsi.

Yang dilakukan pada tahapan ini adalah membaca teks yang menjadi masukan pada proses dekripsi, yaitu record dari hasil pesan yang telah dienkripsi pada pengirim dan menjadi field pesan pada penerima.

(28)

2.4 Layanan SMS dalam RC6

Service (SMS), call, dan multimedia message service (MMS) masih dapat digunakan pada perangkat android tersebut. Dari sekian banyak fitur yang dimiliki oleh android, salah satunya yang masih banyak digunakan yaitu SMS, bahwa pengguna dapat mengirim dan menerima pesan singkat kepada pengguna ponsel lainnya.

Layanan SMS yang menggunakan aplikasi SMS bawaan ponsel masih banyak digunakan oleh setiap orang, dan bukan merupakan jalur yang aman dalam pertukaran informasi. Pesan yang dikirim menggunakan aplikasi SMS bawaan ponsel masih berupa teks terbuka yang belum terproteksi selain itu pengiriman SMS yang dilakukan tidak sampai ke penerima secara langsung, akan tetapi pengiriman SMS harus melewati Short Message Service Center (SMSC) yang berfungsi mencatat komunikasi yang terjadi antara pengirim dan penerima. Dengan tersimpannya SMS pada SMSC, maka seorang operator dapat memperoleh informasi atau membaca SMS di dalam SMSC tersebut, hal ini dapat dibuktikan dari beberapa kasus yang ditangani pihak kepolisian, kejaksaan atau KPK, dimana pihak pihak tersebut meminta transkrip SMS ke operator GSM untuk dijadikan bahan penyelidikan di persidangan.

(29)

diperlukan suatu proses yang disebut dekripsi. Enkripsi dimaksudkan untuk melindungi dan menyamarkan informasi agar terlihat oleh pihak atau orang yang bukan seharusnya.

Salah satu metode enkripsi yang umum digunakan yaitu menggunakan algoritma enkripsi dan kunci yang dapat diubah-ubah sesuai kesepakatan untuk meningkatkan keamanan. Teknik ini disebut sebagai algoritma kunci simetris (symetric key) yaitu suatu enkripsi dengan meggunakan kunci yang sama untuk melakukan proses enkripsi dan dekripsi. Contoh algoritma kunci simetris yaitu Rivest Code 6 (RC6) yang dirancang oleh Ronald L Rivest, M.J.B. Robshow, R. Sidney dan Y.L Yin, algoritma ini merupakan pengembangan dari algoritma sebelumnya yaitu RC5.

Perangkat lunak yang akan dibangun merupakan perangkat lunak yang diterapkan pada telepon selular yang bersistem operasi android dan memiliki fungsi untuk melakukan enkripsi dan dekripsi. Perangkat lunak dapat melakukan pengiriman dan menerima pesan. Pengguna akan berinteraksi dengan perangkat lunak melalui user interface yang di sediakan oleh perangkat lunak, pengguna memasukkan data dengan

menggunakan keypad yang dimiliki oleh telepon selular. Pesan yang telah dibuat dikirimkan ke telepon selualar lain melalui jaringan SMS.

2.5 Eclipse

(30)

Environment) untuk mengembangkan perangkat lunak dan dapat dijalankan di semua platform (platform-independent). Berikut ini adalah sifat dari Eclipse:

1. Multi-platform: Target sistem operasi Eclipse adalah Microsoft Windows, Linux, Solaris, AIX, HP-UX dan Mac OS X.

2. Mulit-language: Eclipse dikembangkan dengan bahasa pemrograman Java,akan tetapi Eclipse mendukung pengembangan aplikasi berbasis bahasa pemrograman lainnya, seperti C/C++, Cobol, Python, Perl, PHP, dan lain sebagainya.

3. Multi-role: Selain sebagai IDE untuk pengembangan aplikasi, Eclipse pun bisa digunakan untuk aktivitas dalam siklus pengembangan perangkat lunak, seperti dokumentasi, test perangkat lunak, pengembangan web, dan lain sebagainya.

Eclipse pada saat ini merupakan salah satu IDE favorit dikarenakan gratis dan open source, yang berarti setiap orang boleh melihat kode pemrograman perangkat lunak ini. Selain itu, kelebihan dari Eclipse yang membuatnya populer adalah kemampuannya untuk dapat dikembangkan oleh pengguna dengan komponen yang dinamakan plug-in. Eclipse dibuat dari kerja sama antara perusahaan-perusahaan anggota 'Eclipse Foundation' (beserta individu-individu lain). Banyak nama besar yang ikut dalam 'Eclipse.

(31)

1. Intellij IDEA(commercial, free30-day trial) 2. Oracle JDeveloper (free)

3. Xinox JCreator (ada versi berbayar maupun free)

Eclipse awalnya dikembangkan oleh IBM untuk menggantikan perangkat lunak IBM Visual Age for Java 4.0. Produk ini diluncurkan oleh IBM pada tanggal 5 November 2001, yang menginvestasikan sebanyak US$ 40 juta untuk pengembangannya. Semenjak itu konsursium Eclipse Foundation mengambil alih untuk pengembangan Eclipse lebih lanjut dan pengaturan organisasinya. Sejak versi 3.0, Eclipse pada dasarnya merupakan sebuah kernel, yang mengangkat plug-in. Apa yang dapat digunakan di dalam Eclipse sebenarnya adalah fungsi dari plug-in yang sudah diinstal. Ini merupakan basis dari Eclipse yang dinamakan Rich Client Platform (RCP). Berikut ini adalah komponen yang membentuk RCP:

1. Core platform 2. OSGi

3. SWT (Standard Widget Toolkit) 4. JFace

5. Eclipse Workbench

(32)

untuk apa saja, dan tidak untuk sesuatu yang spesifik. Jadi, Eclipse tidak saja untuk mengembangkan program Java, akan tetapi dapat digunakan untuk berbagai macam keperluan, cukup dengan menginstal plug-in yang dibutuhkan. Apabila ingin mengembangkan program C/C++ terdapat plug-in CDT (C/C++ Development Tools). Selain itu, pengembangan secara visual bukan hal yang tidak mungkin oleh Eclipse, plug-in UML2 tersedia untuk membuat Diagram UML. Dengan menggunakan PDE setiap orang bisa membuat plug-in sesuai dengan keinginannya. Salah satu situs yang menawarkan plug-in secara gratis seperti Eclipse downloads by project.

(33)
(34)

BAB 3

ANALISIS PERANCANGAN SISTEM

3.1 Analisis Penerapan Algoritma RC6 Dalam Enkripsi SMS

Algoritma RC6 merupakan algoritma sederhana, fungsi yang digunakan merupakan fungsi yang sederhana dan hanya mengandalkan prinsip iterated cipher untuk keamanan. Tampilan hasil enkripsi dan data hasil enkripsi yang diterima harus diperhatikan, hal ini dikarenakan pada data hasil enkripsi, setiap karakternya akan memiliki panjang 8 bit, sedangkan sebagian telepon selular hanya dapat menampilkan karakter dengan panjang 7 bit. Dengan demikian dalam penerapan algoritma RC6 dalam SMS karakter karakter yang akan dienkripsi diubah kedalam nilai ASCII dimana nilai karakter dalam tabel ASCII ditambah tabel karakter special adalah 0 sampai dengan 255, artinya satu karakter ASCII akan diwakili oleh 8 bit, dimana 28=256. Sehingga dalam satu blok plainteks (32 bit) akan menyimpan 4 karakter dalam setiap kali iterasi, maka akan diambil 16 karakter dari plainteks.

(35)

dengan format heksadesimal agar dapat ditampilkan dilayar dan informasinya lebih terbaca.

Algoritma RC6 yang akan digunakan dalam aplikasi enkripsi SMS yang akan deibangun dengan w sebesar 32 bit, r sebesar 20 kali putaran dan panjang kunci beragam lebih dari 1 karakter (8 bit). Langkah-langkah algotirma RC6 dalam pelaksanaan tugas akhir ini akan dikelompokkan kedalam beberapa bagian, yaitu:

1.Pembangkit subkunci

Kunci dari pengguna ini akan dimasukkan oleh pengguna pada saat akan melakukan proses enkripsi dan dekripsi. Kunci ini memiliki tipe data string dan memiliki panjang 16 bit (16 karakter).

2. Baca masukkan untuk proses enkripsi

Yang di lakukan pada tahapan ini adalah membaca teks yang menjadi masukan pada proses enkripsi, yaitu field dari aplikasi enkripsi SMS. Pada proses enkripsi pesan fieldnya adalah isi pesan.

3.Enkripsi meliputi whitening awal, iterasi, dan whitening akhir. 4.Baca masukkan untuk proses dekripsi.

Yang dilakukan pada tahapan ini adalah membaca teks yang menjadi masukkan pada proses dekripsi, yaitu record dari hasil pesan yang telah dienkripsi pada pengirim dan menjadi field pesan pada penerima.

5.Dekripsi merupakan kebalikan dari enkripsi.

(36)
(37)

3.2 Perancangan Sistem

3.2.1 Perancangan Form Menu

Form menu adalah sebuah form yang dibuat untuk memulai sistem kriptografi RC6 ini. Form ini dibangun untuk membuka form yang nantinya akan dihubungkan dengan form-form yang lain. Nama dari file xml dalam form menu ini adalah

“menu.xml”. Berikut ini adalah source code file xml nya

Disamping file xml yang merupakan file perancang bangun yang berfungsi untuk mendesign form, maka ada juga source code untuk mengoperasikan file ini

pesan. Nama dari file form menulist dalam eclipse adalah “MenuList.java”. Dilihat

dalam sourcecode, dimana form ini mebangun 2 teksview yaitu “pengirim dan

penerima”. Dimana ketika kita menekan tombol pengirim, dia akan mengarahkan ke

bagian form pengirim, dan begitu juga dengan “penerima”, ketika di tekan penerima,

maka akan mengarahkan user kebagian pembuka pesan yaitu form “penerima”.

3.2.3 Perancangan Form Pengirim

(38)

sedangkan editteks berfungsi untuk mengisi apa yang akan user isi, misalnya alamat email si pengirim dan penerima pesan, harus sesuai dengan yang ada, sedangkan button berfungsi untuk meneruskan pesan yang telah di edit atau diisi oleh user. Syarat untuk menjalankan aplikasi kriptografi saya ini adalah pengirim dan penerima pesan harus memiliki Gmail sendiri. Aplikasi ini berbeda dengan aplikasi sms sebelumnya yang ada di handphone-handphone yang lain yang hanya memanfaatkan nomor telepon selular. Pesan yang dikirim dalam bentuk pesan biasa akan di enkripsi kedalam bahasa yang tidak dapat di mengerti oleh manusia yang disebut chiperteks. Chiperteks diperoleh melalui perhitungan algoritma RC6. Berikut adalah form pengirim yang di jalankan di emulator

Gambar 2 form pengirim pesan gmail

Nama dari aplikasi android yang saya buat ini adalah “bahu”, dan nama file dari bahu

untuk form pengirim ini adalah “new_message”. Adapun source code yang telah dibuat dalam file xml nya adalah sebagai berikut:

3.2.4 Perancangan Form Penerima Pesan

(39)

Di dalam form ini terdapat 3 teksview, 3 editteks dan 1 button. Tombol button yang terdapat di dalam form ini berfungsi sebagai pembuka pesan. Jadi pesan yang tadinya telah dienkripsi oleh RC6 akan menjadi pesan semula. Nama file yang terdapat pada xml yang saya buat pada form penerima pesan adalah “kedua.xml” Berikut adalah gambar dari form penerima pesan:

Gambar 3 form penerima pesan

(40)

Editteks yang telah lengkap diisi oleh pengirim pesan akan dikirim dengan menekan tombol “send”. Ketika tombol send ditekan pesan akan dikirim ke gmail yang dituju. Pesan yang diterima di dalam gmail akan berbentuk pesan yang tidak dapat di mengerti, karena telah di enkripsi melalui algoritma RC6. Namun yang di enkripsi hanyalah isi dari pesan, sedangkan email pengirim, password dan subjek tidak akan ikut di enkripsi.

Misalkan kita masukkan isi pesan dari pengirim sebagai berikut “ ini nomor

pin saya”, maka kata tersebut akan di enkripsi menjadi sebuah bahasa yang tidak dimengerti. Berikut ini adalah proses dari awal dari mana pesan tersebut akan di enkripsi sampai di dekripsi kembali.

Gambar 4 Form pengirim dengan isi pesan

Kemudian setelah di klik tombol “Kirim”, setelah itu akan muncul

pemberitahuan “send”, itu artinya pesan anda tersebut telah terkirim kepada penerima

(41)

adalah source code yang berfungsi untuk mengirim pesan tersebut dari form pengirim

dengan nama file dalam eclipse saya yaitu “bahu1.java”:

Setelah itu akan kita lihat dalam gmail kita, yaitu sebuah pesan yang sudah terenskripsi. Aplikasi ini tidak akan bisa dibuka oleh orang yang tidak memiliki aplikasi ini. Aplikasi ini hanya dapat dibuka di dalam sistem android. Jadi semisalnya ada tangan jahil yang ingin membuka isi pesannya di dalam web browser, maka akan tampil sebuah pesan seperti dibawah ini. Yaitu sebuah pesan yang tidak dapat di mengerti:

Gambar 5 Tampilan pesan enkripsi di dalam gmail pengirim.

(42)

Gambar 6 Tampilan pesan di dalam form penerima

Pesan yang tadinya terenskripsi menjadi sebuah bahasa yang tidak dapat dimengerti di dalam gmail, kini telah didekripsi kembali menjadi pesan semula yang dapat di mengerti oleh si penerima yang asli. Proses tersebut kembali menjadi pesan

semula setelah ditekan tombol “Buka” pada gambar diatas.

3.3 Perancangan Program

(43)

F T

Gambar 7 Flowchart Kriptografi RC6 START

Pengirim

Email pengirim Password Email penerima

Subjek Isi pesan

Enkripsi Gmail

Dekripsi Penerima

(44)

3.4 Perancangan Data Flow Diagram (DFD)

Dalam menyusun tugas akhir ini, penulis melakukan perancangan awal sistem dengan menggunakan Data Flow Diagram (DFD). Data Flow Diagram (DFD) adalah suatu diagram yang menggunakan notasi-notasi untuk menggambarkan arus dari data sistem, yang penggunaannya sangat membantu untuk memahami sistem secara logika ,terstruktur dan jelas. Berikut ini adalah Data Flow Diagram dari Kriptografi RC6:

Email pengirim password email penerima isi dan subjek

enkripsi dekripsi

Gambar 8 DFD kriptografi RC6

USER

pengirim penerima

Gmail pesan

(45)
(46)

BAB 4

IMPLEMENTASI SISTEM

4.1 Pengertian dan Tujuan Implementasi Sistem

Implementasi sistem adalah prosedur yang dilakukan untuk menyelesaikan desain sistem yang ada dalam dokumen desan sistem yang disetujui dan menguji, meginstall dan memulai menggunakan sistem yang baru atau sistem yang diperbaiki. Adapun tujuan dari implementasi sistem adalah:

1.Menyediakan desain sistem output dan program untuk sistem baru yang akan dibangun.

2.Menyediakan perangkat keras (hardware) dan perangkat lunak (software). 3.Menuliskan program-program dan prosedur-prosedur yang di perlukan. 4.Menguji sistem.

5.Perawatan sistem (maintenance).

4.2 Komponen Utama dalam Implementasi Sistem

(47)

4.2.1 Perangkat Keras (Hardware)

Hardware merupakan komponen yang terlihat secara fisik, yang saling bekerjasama dalam mengolah data. Perangkat keras yang digunakan untuk menjalankan aplikasi ini adalah sebagai berikut:

1. Sebuah computer 2. Monitor

3. CPU

4. Hardisk sebagai tempat sistem beroperasi dan media penyimpanan. 5. Memory minimal 128 Mb

6. Keyboard dan mouse.

4.2.2 Perangkat Lunak (Software)

Software adalah instruksi atau program-program komputer yang dapat digunakan oleh

komputer dengan memberikan fungsi serta penampilan yang diinginkan. Dalam hal ini, perangkat lunak yang dibutuhkan untuk menjalankan aplikasi ini adalah sebagai berikut:

1.Sistem operasi Windows Eight.

2.Eclipse galileo untuk pembuatan aplikasi android.

3.Emulator untuk menjalankan di dalam komputer aplikasi android.

4.2.3 Tenaga Pelaksana (Brainware)

(48)

4.3 Uji Program 4.3.1 Halaman Utama

Ketika pertama kali aplikasi dibuka, maka bagian pertama yang akan muncul adalah halaman home yang memberitahu sekilas informasi tentang menu di android. Adapun tampilannya adalah sebagai berikut:

Gambar 9 tampilan form menu

Tampilan menu ini akan mengarahkan ke form “menulist”. Form dimana hanya

terdapat 2 icon, yaitu “penerima” dan “pengirim”.

4.3.2 Halaman Menu List

(49)

Gambar 10 tampilan form menulist

4.3.3 Halaman Form Pengirim

Halaman form pengirim ini adalah sebuah halaman yang berfungsi untuk mengirimkan pesan kepda penerima. Dimana alamat yang dituju merupakan alamat email penerima, dan pengirim juga mengisikan alamat email dan password yang sebenarnya. Adapun aplikasi ini hanya membenarkan bagi pengguna “Gmail” saja. Pesan tidak akan terkirim apabila alamat email tersebut menggunakan host yahoo ataupun banyak lainnya. Berikut tampilan form pengirim:

(50)

4.3.4 Halaman Tampilan Gmail

Halaman ini adalah alamat tempat dimana pesan yang terkirim melalui form pengirim, akan dienkripsi dengan menggunakan algoritma RC6 menjadi pesan yang tidak dapat dimengerti oleh pembaca. Berikut tampilan pesan dialamat gmail.

Gambar 12 tampilan pesan enkripsi didalam gmail

4.3.5 Halaman Form Penerima

Halaman ini merupakan halaman dimana pesan yang tadinya dienkripsi menjadi sebuah bahasa yang tidak dimengerti akan didekripsi kembali menjadi pesan asli dan dapat dimengerti yang dikirim oleh pengirim. Jadi ketika kita sudah selesai mengisi box email penerima dan passwordnya, maka langkah selanjutnya adalah dengan

(51)
(52)
(53)

BAB 5

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Dari hasil implementasi perangkat lunak yang telah dilakukan, dapat diambil beberapa kesimpulan antara lain :

1.Teknologi enkripsi, dekripsi, dan sistem manajemen kunci kriptografi pesan SMS pada telepon genggam berbasis android dapat diimplementasikan.

2.Ciphertext pesan yang dihasilkan dengan kriptografi ini mengalami pembengkakan data yang cukup besar yaitu antara 40% sampai 1200%. Semakin besar data plaintext maka pembengkakan data semakin kecil tetapi naik kembali pada tiap interval 8 karakter.

3.Pembangkitan session key yang terdiri dari bilangan acak dan nomor ponsel pengguna dapat meningkatkan keamanan data. Nomor ponsel pengguna dapat digunakan sebagai otentikasi pesan.

5.2 Saran

Saran yang dapat penulis berikan setelah mengerjakan tugas akhir ini adalah sebagai berikut :

1.Agar dapat mengurangi pembengkakan data, maka dibutuhkan kompresi sebelum pesan dikirim.

(54)
(55)
(56)

DAFTAR PUSTAKA

Munir, Rinaldi. 2004. Kuliah IF5054 Kriptografi :Tipe dan Mode Algoritma Simetri. Institut Teknologi Bandung. Bandung.

Paul, Gautam, Shubamoy Maitra. 1998 RC4 Stream Cipher and Its Variants . CRC Press. Sistem keamanan komputer. Jakarta

Menezes, A.J., 1997. Handbook of Applied Cryptography. CRC Press.

Munir, Rinaldi, Manajemen kunci, Bahan Kuliah IF5054, pp. 1–2, 2004. Institut Teknologi Bandung. Bandung.

Agrawal,M., Kayal, N.,& Saxena, N.(2002).Primes is in p. Ann.of Math,2,781-793.

Wikipedia (2011b). Kasiski examination.

http:/en.wikipedia.org/wiki/Kasiski_examination.

(57)

LISTING PROGRAM

1. TAMPILAN DESIGN FORM MENU <?xml version="1.0" encoding="utf-8"?>

<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical"

android:layout_width="fill_parent" android:layout_height="fill_parent"

android:background="@drawable/android27" >

<TextView

android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello"

/>

<Button android:id="@+id/ImageButton01" android:layout_width= "wrap_content" android:layout_height= "wrap_content" android:text="Mulai"

(58)

</AbsoluteLayout>

2. Source Code Untuk Menghubungkan Form Menu ke Form Mnulist package bahu.a;

import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button;

public class bahu extends Activity {

/** Called when the activity is first created. */ Button btnpertama;

Intent i;

@Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.main);

btnpertama = (Button)findViewById(R.id.ImageButton01); btnpertama.setOnClickListener(new View.OnClickListener() {

(59)
(60)

android:textSize="30px"> </TextView>

</LinearLayout>

4. Sourcecode Menghubungkan Form Menulist ke Form Pengirim atau Penerima package bahu.a;

public class MenuList extends ListActivity { /** Called when the activity is first created. */ public void onCreate(Bundle icicle) {

super.onCreate(icicle);

// Create an array of Strings, that will be put to our ListActivity

String[] bangundatar = new String[] { "PENERIMA", "PENGIRIM"}; // Create an ArrayAdapter, that will actually make the Strings above // appear in the ListView

//Menset nilai array ke dalam list adapater sehingga data pada array akan dimunculkan dalam list

(61)

android.R.layout.simple_list_item_1, bangundatar)); }

@Override

protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id);

// Get the item that was clicked //Menangkap nilai text yang dklik

Object o = this.getListAdapter().getItem(position); String keyword = o.toString();

i = new Intent(MenuList.this,NewMessage.class); startActivity(i);

(62)

5. Sourcecode Design Form Pengirim <?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical"

android:layout_width="fill_parent" android:layout_height="fill_parent"

android:background="@drawable/crip2">

<LinearLayout

android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="15dp" android:orientation="horizontal" >

<TextView

android:layout_width="100dp"

android:layout_height="wrap_content" android:gravity="center"

(63)

android:textStyle="bold" />

<EditText

android:id="@+id/EditSenderEmail" android:layout_width="200dp"

android:layout_height="wrap_content" > </EditText>

</LinearLayout>

<LinearLayout

android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" >

<TextView

android:layout_width="100dp"

android:layout_height="wrap_content" android:gravity="center"

(64)

<EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="15dp" android:orientation="horizontal" >

(65)

android:layout_width="200dp"

android:layout_height="wrap_content" > </EditText>

</LinearLayout>

<LinearLayout

android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="15dp" android:orientation="horizontal" >

<TextView

android:layout_width="100dp"

android:layout_height="wrap_content" android:gravity="center"

android:text="Subject" android:textColor="#ffffff" android:textSize="13dp" android:textStyle="bold" />

(66)

android:id="@+id/EditEmailSubject" android:layout_width="200dp"

android:layout_height="wrap_content" > </EditText>

</LinearLayout>

<LinearLayout

android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="15dp" android:orientation="horizontal" >

<TextView

android:layout_width="100dp"

android:layout_height="wrap_content" android:gravity="center"

android:text="Isi Pesan" android:textColor="#ffffff" android:textSize="13dp" android:textStyle="bold" />

(67)

android:id="@+id/EditEmailBody"

android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:orientation="horizontal" >

<Button

android:id="@+id/ButtonSendEmail" android:layout_width="200dp"

android:layout_height="wrap_content" android:layout_x="120dip"

android:layout_y="342dip" android:text="Kirim" /> </LinearLayout>

<LinearLayout

(68)

android:orientation="horizontal" >

<Button

android:id="@+id/ButtonCancelEmail" android:layout_width="200dp"

android:layout_height="wrap_content" android:layout_x="120dip"

android:layout_y="342dip" android:text="Ulangi" /> </LinearLayout>

</LinearLayout>

6. Sourcode Form Pengirim Untuk Mengirim Pesan ke Gmail dan Form Pengirim

package bahu.a;

import java.util.Properties;

import javax.mail.Message;

import javax.mail.MessagingException; import javax.mail.NoSuchProviderException; import javax.mail.Session;

import javax.mail.Transport;

(69)

import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage;

import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import droidRC6.library.com.RC6;

public class NewMessage extends Activity { private EditText SenderEmail;

private EditText SenderPassword; private EditText RecipientEmail; private EditText EmailSubject; private EditText EmailBody;

/** Called when the activity is first created. */ @Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.sekali);

(70)

SenderEmail = (EditText) findViewById(R.id.EditSenderEmail);

SenderPassword = (EditText) findViewById(R.id.EditSenderPassword); RecipientEmail = (EditText) findViewById(R.id.EditRecepientEmail); EmailSubject = (EditText) findViewById(R.id.EditEmailSubject); EmailBody = (EditText) findViewById(R.id.EditEmailBody);

final Button send = (Button) this.findViewById(R.id.ButtonSendEmail); final Button cancel = (Button) this.findViewById(R.id.ButtonCancelEmail); send.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

// TODO Auto-generated method stub

String sendEmail = SenderEmail.getText().toString(); String sendPass = SenderPassword.getText().toString(); String recipient = RecipientEmail.getText().toString(); String subjek = EmailSubject.getText().toString(); String body = EmailBody.getText().toString();

//String pesan = kripto.encrypt(body);

(71)

recipients = recipient.split(",");

for (int i = 0; i < recipients.length; i++) {

System.out.println("String ke["+i+"] "+recipients[i]); }

String host = "smtp.gmail.com"; String from = sendEmail; String pass = sendPass;

Properties props = System.getProperties();

props.put("mail.smtp.starttls.enable", "true"); // added this line props.put("mail.smtp.host", host);

props.put("mail.smtp.user", from); props.put("mail.smtp.password", pass); props.put("mail.smtp.port", "465"); props.put("mail.smtp.auth", "true");

props.put("mail.smtp.socketFactory.port", "465");

props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory"); props.put("mail.smtp.socketFactory.fallback", "false");

// String[] to = {"testingku2@gmail.com", "muhammadzulham116@gmail.com"}; // added this line

// String [] to = {recipient};

(72)

message.setFrom(new InternetAddress(from)); } catch (AddressException e) {

// TODO Auto-generated catch block e.printStackTrace();

} catch (MessagingException e) { // TODO Auto-generated catch block e.printStackTrace();

}

InternetAddress[] toAddress = new InternetAddress[recipients.length];

// To get the array of addresses

for( int i=0; i < recipients.length; i++ ) { // changed from a while loop try {

toAddress[i] = new InternetAddress(recipients[i]); } catch (AddressException e) {

// TODO Auto-generated catch block e.printStackTrace();

} }

System.out.println(Message.RecipientType.TO);

for( int i=0; i < toAddress.length; i++) { // changed from a while loop try {

(73)

} catch (MessagingException e) {

byte encri[] = RC6.encrypt(body.getBytes(), "123456789abcdefg".getBytes());

String nilai4="";

for(int i =0 ; i< encri.length; i++) {

System.out.println("A["+i+"]=" + encri[i]+"#"); nilai4 = nilai4 + encri[i]+"#";

}

message.setText(nilai4); }

catch(MessagingException e) {

e.printStackTrace(); }

(74)

Transport transport;

transport = session.getTransport("smtp"); transport.connect(host, from, pass);

transport.sendMessage(message, message.getAllRecipients()); transport.close();

Toast.makeText(NewMessage.this, "Send", Toast.LENGTH_LONG).show(); } catch (NoSuchProviderException e) {

// TODO Auto-generated catch block e.printStackTrace();

}catch (MessagingException e) { // TODO Auto-generated catch block

Toast.makeText(NewMessage.this, "Not Send", Toast.LENGTH_LONG).show(); e.printStackTrace();

}

/* try {

GMailSender sender = new GMailSender(SenderEmail.getText().toString(), SenderPassword.getText().toString());

sender.sendMail(EmailSubject.getText().toString(), EmailBody.getText().toString(),

(75)

Toast.makeText(getBaseContext(), "Email Have Been Sent", Toast.LENGTH_SHORT).show();

finish();

} catch (Exception e) {

Toast.makeText(getBaseContext(), "Failed to Send", Toast.LENGTH_SHORT).show();

} */ } });

cancel.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

// TODO Auto-generated method stub

SenderEmail.setText(""); SenderPassword.setText(""); RecipientEmail.setText(""); EmailBody.setText(""); EmailSubject.setText("");

(76)

} }

7. Algoritma RC6 Untuk Mendekripsi Pesan package droidRC6.library.com;

public class RC6 {

private static int w=32, r=20;

private static final double e = Math.E;

private static final double goldenRatio = 1.6180339887496482;

// private static int Pw=0xb7e15163, Qw=0x9e3779b9; private static int Pw=8, Qw=3;

private static int[] S;

public static int[] convBytesWords(byte [] key, int u, int c) { int[] tmp = new int[c];

for (int i = 0; i < tmp.length; i++) tmp[i] = 0;

for (int i = 0, off = 0; i < c; i++)

(77)

| ((key[off++] & 0xFF) << 16) | ((key[off++] & 0xFF) << 24);

return tmp; }

private static int[] generateSubkeys(byte[] key) {

int u = w / 8;

int c = key.length / u; int t = 2 * r + 4;

int[] L = convBytesWords(key, u, c);

int[] S = new int[t]; S[0] = Pw;

for (int i = 1; i < t; i++) S[i] = S[i - 1] + Qw;

int A = 0; int B = 0; int k = 0, j = 0;

(78)

for (int i = 0; i < v; i++) {

A = S[k] = rotl((S[k] + A + B), 3); B = L[j] = rotl(L[j] + A + B, A + B); k = (k + 1) % t;

j = (j + 1) % c;

}

return S; }

private static int rotl(int val, int pas) { return (val << pas) | (val >>> (32 - pas)); }

private static int rotr(int val, int pas) { return (val >>> pas) | (val << (32-pas)); }

public static byte[] decryptBloc(byte[] input){ byte[] tmp = new byte[input.length]; int t,u;

int aux;

(79)

int off = 0;

(80)

D = D - S[1];

public static byte[] encryptBloc(byte[] input){

(81)
(82)

for(int i = 0;i<tmp.length;i++){

private static byte[] paddingKey(byte[] key){ int l = key.length%4;

for(int i=0;i<l;i++) key[key.length+i] = 0; return key;

}

(83)

for (int i = 1; i < lenght; i++) padding[i] = 0;

int count = 0;

byte[] tmp = new byte[data.length+lenght]; //afiseazaMatrice(S);

System.arraycopy(bloc, 0, tmp, i - 16, bloc.length); return tmp;

(84)

public static byte[] decrypt(byte[] data, byte[] key) { byte[] tmp = new byte[data.length];

byte[] bloc = new byte[16]; key = paddingKey(key); S = generateSubkeys(key);

int i;

for(i=0;i<data.length;i++){ if(i>0 && i%16 == 0){ bloc = decryptBloc(bloc);

System.arraycopy(bloc, 0, tmp, i-16, bloc.length); }

if (i < data.length)

bloc[i % 16] = data[i]; }

bloc = decryptBloc(bloc);

System.arraycopy(bloc, 0, tmp, i - 16, bloc.length);

tmp = deletePadding(tmp); return tmp;

(85)

private static byte[] deletePadding(byte[] input){ int count = 0;

int i = input.length - 1; while (input[i] == 0) { count++;

i--; }

byte[] tmp = new byte[input.length - count - 1]; System.arraycopy(input, 0, tmp, 0, tmp.length); return tmp;

} }

8. Sourcecode Design Form Penerima <?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical"

android:layout_width="fill_parent" android:layout_height="fill_parent"

(86)

<LinearLayout

android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="15dp" android:orientation="horizontal" >

<TextView

android:layout_width="100dp"

android:layout_height="wrap_content" android:gravity="center"

android:text="Email Penerima" android:textColor="#ffffff" android:textSize="13dp" android:textStyle="bold" />

<EditText

android:id="@+id/edtpenerima" android:layout_width="200dp"

android:layout_height="wrap_content" > </EditText>

</LinearLayout>

(87)

android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" >

<TextView

android:layout_width="100dp"

android:layout_height="wrap_content" android:gravity="center"

android:text="Password" android:textColor="#ffffff" android:textSize="13dp" android:textStyle="bold" />

<EditText

android:id="@+id/edtPassword" android:layout_width="200dp"

android:layout_height="wrap_content" android:password="true" />

</LinearLayout>

<LinearLayout

(88)

android:layout_marginTop="15dp" android:orientation="horizontal" >

<TextView

android:layout_width="100dp"

android:layout_height="wrap_content" android:gravity="center"

android:text="Isi Pesan" android:textColor="#ffffff" android:textSize="13dp" android:textStyle="bold" />

<EditText

android:id="@+id/edtterima" android:layout_width="200dp"

android:layout_height="wrap_content" > </EditText>

</LinearLayout>

<LinearLayout

(89)

android:orientation="horizontal" >

<Button

android:id="@+id/btnbuka" android:layout_width="200dp"

android:layout_height="wrap_content" android:layout_x="120dip"

android:layout_y="342dip" android:text="Buka" /> </LinearLayout>

</LinearLayout>

9. Sourcecode Untuk Membuka Pesan Yang Terenkripsi Menjadi Pesan Yang Bisa dibaca Pada Form Penerima

package bahu.a

import java.io.IOException; import java.util.Date; import java.util.Properties;

(90)

import javax.mail.Message;

public class bahu2 extends Activity {

/** Called when the activity is first created. */ EditText receive ; TextView baca;

EditText pass; EditText edit; Button btnpertama; Intent a;

(91)

Folder inbox; static String line; String receiv , password;Button btn; @Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.kedua);

receive = (EditText)findViewById(R.id.edtpenerima); pass = (EditText)findViewById(R.id.edtPassword); edit = (EditText)findViewById(R.id.edtterima); btn = (Button)findViewById(R.id.btnbuka); receiv = receive.getText().toString();

password = pass.getText().toString(); String nilai = "";

byte enc [] ;

System.out.println("Text clar: "+nilai);

(92)

// edit.setText(nilai4);

(93)

String nilai2 = "muhammad fazil";

btn.setOnClickListener(new View.OnClickListener() {

public void onClick(View arg0) {

(94)
(95)

System.exit(1);

protected void printAllMessages(Message[] msgs) throws MessagingException, IOException {

// TODO Auto-generated method stub

for (int i = msgs.length-1; i >msgs.length-2; i--) {

System.out.println("MESSAGE #" + (i + 1) + ":"); printEnvelope(msgs[i]); }

}

(96)

for (int j = 0; j < a.length; j++)

if ((a = message.getRecipients(Message.RecipientType.TO)) != null) {

(97)

//byte tes4 =12;

(98)

//String decodedUrl = URLDecoder.decode(content, "UTF-8"); //String text3 = content;

System.out.println("Subject : " + subject);

System.out.println("Received Date : " + receivedDate.toString()); // byte textdec [] = decodedUrl.getBytes();

(99)

// edit.setText(new String(tes3));

//System.out.println("Content : " + new String(tes3)); }

(100)

Kartu Bimbingan Tugas Akhir Mahasiswa

Nama : MUHAMMAD TP FAZIL Nomor Induk Mahasiswa : 112406204

Judul Tugas Akhir : PENERAPAN KRIPTOGRAFI RC6 PADA PENGIRIMAN DAN PENERIMAAN PESAN EMAIL DI ANDROID

Dosen Pembimbing : Asima Manurung, S.Si, M.Si Tanggal Mulai Bimbingan : ... Tanggal Selesai Bimbingan : ...

No Tanggal Asistensi Bimbingan

Pembahasan Pada Asistensi Mengenai, Pada Bab :

Paraf Dosen

Pembimbing Keterangan

*Kartu ini harap dikembalikan ke Departemen Matematika bila bimbingan mahasiswa telah selesai

Diketahui, Disetujui,

Departemen Matematika FMIPA USU Pembimbing Utama/ Ketua Penanggung Jawab

(101)

S U R A T K E T E R A N G A N

Hasil Uji Program Tugas Akhir

Yang bertanda tangan di bawah ini, menerangkan bahwa Mahasiswa Tugas Akhir Program Diploma (D3) Teknik Informatika:

N a m a : MUHAMMAD TP FAZIL

N I M : 112406204

Program Studi : DIPLOMA (D3) TEKNIK INFORMATIKA

Judul Tugas Akhir : PENERAPAN KRIPTOGRAFI RC6 PADA

PENGIRIMAN DAN PENERIMAAN PESAN

EMAIL DI ANDROID

Telah melaksanakan test program Tugas Akhir Mahasiswa tersebut di atas pada tanggal: Juni 2014.

Dengan Hasil : Sukses / Gagal

Demikian diterangkan untuk digunakan melengkapi syarat pendaftaran Ujian Meja Hijau Tugas Akhir Mahasiswa bersangkutan di Departemen Matematika FMIPA USU Medan.

Medan, Juni 2014 Dosen Pembimbing

Program Studi D3 Teknik Informatika

(102)

Gambar

Gambar 1 tabel kunci Sbox RC6
Gambar 2 form pengirim pesan gmail
gambar dari form penerima pesan:
Gambar 4 Form pengirim dengan isi pesan
+7

Referensi

Dokumen terkait

[r]

Penelitian ini akan membahas tentang komposisi mikroskopi dari komponen organik pembentuk batubara (grup maseral) yaitu vitrinite, liptinite, dan inertinite untuk

Tumbuhan CAM adalah tumbuhan yang stomatanya membuka pada malam hari dan menutup pada siang hari, memiliki laju fotosintesis yang rendah bila dibandingkan dengan tanaman C3 dan

Puji syukur kami panjatkan kepada Allah SWT karena telah melimpahkan rahmat dan hidayah-Nya sehingga dapat terselesaikannya “ANALISIS HUBUNGAN FAKTOR FISIOLOGIS

Sebaliknya instrumen observasi mempunyai keterbatasan dalam menggali informasi yang berupa pendapat dari subjek yang diteliti, untuk memaksimalkan hasil

Evaluasi yang digunakan oleh guru dengan menggunakan komponen- komponen yang tepat untuk menilai keterampilan menulis paragraf siswa meliputi: (1) isi karangan

Jumlah biaya tenaga kerja yang digunakan oleh petani bukan anggota kelompok tani lebih tinggi disebabkan karena jumlah tenaga kerja pada panen tahun 2014 masih

Berdasarkan data bandingan sebelumnya yang berjumlah 40 teknik, penulis pada akhirnya menemukan bahwa di era sekarang terjadi adanya penambahan (69 teknik