## APLIKASI MOBILE UNTUK ENKRIPSI DATA GAMBAR MENGGUNAKAN KOMBINASI FUNGSI XOR DAN MODE OPERASI CBC
Jannatun Aliyah 1*
Teknik Informatika Univertsitas Teknologi Sumbawa email : jannatun.aliyah@uts.ac.id *
Abstrak: Dalam tulisan ini memaparkan pembuatan aplikasi kriptografi dan mengimplementasikan model enkripsi pada data gambar. Tujuannya untuk keamanan pada penyimpanan file gambar. Proses enkripsi pada gambar akan  menghasilkan hasil enkripsi  yang  dapat  merahasiakan  gambar.  Sebaliknya,  proses  dekripsi  akan  mengembalikan  gambar  yang  dirahasiakan tersebut  kembali  menjadi  gambar  aslinya.  Metode  yang  digunakan  dalam  enkripsi  dan  dekripsi  data  gambar  ini  adalah kombinasi fungsi XOR dan mode operasi CBC (chipherblock Chaining). Dimana enkripsi yang dilakukan pertama kali dengan fungsi XOR kemudian dilanjutkan dengan enkripsi menggunakan mode operasi CBC. Mengkombinasikan fungsi XOR dengan mode  operasi  CBC  bertujuan  untuk  meningkatkan  keamanan  data  gambar,  sehingga  kriptanalis  menjadi  lebih  sulit  untuk menampilkan plaintext (gambar aslinya). Dalam pembuatan aplikasi CryptoImage ini menggunakan Netbeans yang merupakan salah satu aplikasi Integrated Development Environment (IDE) Java. Aplikasi ini digunakan khusus untuk mengembangkan program java. Dalam Netbeans ini, untuk aplikasi mobile menggunakan Java 2 Platform Micro Edition (J2ME). Ketersediaan fasilitas  kriptografi  pada  platform  J2ME  ini  memungkinkan  kita  untuk  memanipulasi  data-data  agar  kerahasiaannya  bisa terjamin.
Kata Kunci : Informasi, Enkripsi, Dekripsi, Kunci
Abstract: In this paper explain how making the applications of cryptographic and implementing the encryption model in image or picture data. The goal for the security of the image file storage. The encryption process on the picture will produce result that can keep the image encryption. Conversely, the decryption process will restore image that is re-classified into the original image. The method used in the encryption and decryption of image data is a combination of the XOR function and the CBC operation  mode  (Chipherblock  Chaining).  Where  the  encryption  is  performed  first  with  the  XOR  function  was  followed  by encryption using the CBC operating mode. Combining the XOR function with the CBC operation mode is intended to increase the security of image data, so that it is more difficult for cryptanalysts to display plaintext (the original image or picture). In making this CryptoImage application using Netbeans which is one of the Java Integrated Development Environment (IDE) applications. This application is used specifically to develop a java programs. In this Netbeans, for mobile applications using Java 2 Platform Micro Edition (J2ME). The availability of cryptographic facilities on J2ME platform allows us to manipulate the data for confidentiality can be guaranteed.
Keywords : Information, Encryption, Decryption, Key

## PENDAHULUAN
Kemajuan  dan  perkembangan  teknologi informasi dewasa ini telah berpengaruh pada hampir semua aspek kehidupan manusia, terutama dalam hal berkomunikasi.  Dengan  adanya  handphone  (telepon genggam),  komunikasi  jarak  jauh  dapat  dilakukan dengan  cepat  dan  mudah.  Namun,  handphone  tidak terlalu  aman  karena  merupakan  media  komunikasi umum yang dapat digunakan oleh siapapun sehingga sangat  rawan  terhadap  pencurian  informasi  oleh pihak-pihak yang tidak berhak mengetahui informasi tersebut. Oleh karena penggunaan handphone sangat luas  yang  umumnya  mengandung  informasi  yang bersifat  rahasia,  maka  keamanan  informasi  menjadi faktor utama yang harus dipenuhi. Informasi tersebut dapat  berupa  data  gambar  atau  foto,  video,  audio, maupun berupa text.
Keamanan  data  merupakan  hal  yang  sangat penting  dalam  menjaga  kerahasiaan  informasi terutama  yang  berisi  informasi  sensitif  yang  hanya boleh  diketahui  isinya  oleh  pihak  yang  berhak  saja, apalagi  jika  pengirimannya  dilakukan  melalui jaringan  publik,  apabila  data  tersebut  tidak diamankan  terlebih  dahulu,  akan  sangat  mudah
disadap  dan  diketahui  isi  informasinya  oleh  pihak- pihak yang tidak memiliki wewenang.
Berbagai hal telah dilakukan untuk mendapatkan  jaminan  keamanan  informasi  rahasia ini.  Salah  satu  cara  yang  digunakan  adalah  dengan menyandikan isi informasi menjadi suatu kode-kode yang tidak dimengerti sehingga apabila disadap maka akan  kesulitan  untuk  mengetahui  isi  informasi  yang sebenarnya.  Cara  tersebut  biasa  dikenal  dengan sistem  kriptografi  yaitu  dengan  menyediakan  isi informasi ( plaintext ) tersebut menjadi isi  yang tidak dipahami  melalui  proses  enkripsi  ( encipher ),  dan untuk  memperoleh  kembali  informasi  yang  asli, dilakukan proses deskripsi ( decipher ). Saat ini, banyak algoritma-algoritma kriptografi  bermunculan  sebagai  teknik  untuk mengamankan  data.  Berbagai  macam  algoritma tersebut diterapkan untuk tipe data yang berbeda dan memiliki tingkat keamanan yang berbeda pula.
Dalan  Netbeans  ini,  untuk  aplikasi  mobile menggunakan Java 2 Platform, Micro Edition ( J2ME ). Ketersediaan fasilitas  kriptografi  pada  platform J2ME  ini  memungkinkan  kita  untuk  memanipulasi data-data agar kerahasiaannya bisa terjamin.
Pengamanan  informasi  berupa  gambar  atau foto  sangat  penting  karena  sifatnya  pribadi.  Oleh karena itu, dibutuhkan suatu sistem untuk menjamin kerahasiaannya  dengan  pembuatan  suatu  program enkripsi  data  gambar  menggunakan  J2ME  dengan Algoritma Fungsi XOR dan Mode Operasi CBC. pembahasan  mengenai  pembuatan  sebuah aplikasi kriptografi yang digunakan untuk menyandikan suatu data gambar, mencakup:
1. Pembuatan program dengan media pemrograman java khususnya J2ME
2. Aplikasi  yang  dibangun  menggunakan  metode enkripsi  dan  dekripsi  dengan  Algoritma  Fungsi XOR dan mode Operasi CBC
3. Tidak  mencakup  cara  penukaran  kunci  enkripsi dan dekripsi.
Adapun tujuan dari penelitian ini adalah untuk mengembangkan  dan  menambah  pembendaharaan aplikasi mobile dalam dunia teknologi informasi yang semakin berkembang.
Aplikasi kriptografi ini dapat digunakan untuk :
1. Mengatasi  masalah  pencurian  informasi  penting yaitu berupa data gambar atau foto.
2. Mencegah  orang  yang  tidak  berhak  menerima pesan gambar atau foto rahasia atau penting dapat melihat  informasi  yang  disampaikan  pada pemiliknya.

## TINJAUAN PUSTAKA
1. Pemrograman Java
a. Bahasa Pemrograman Java
Java  adalah  sebuah  bahasa  pemrograman komputer  berbasiskan  kepada Object  Oriented Programming (  pemrograman  berbasiskan  objek  ) yang  sederhana  dan  tidak  tergantung  pada platform yang digunakan. Bahasa ini dikembangkan oleh Sun Microsystems  dan  memiliki  banyak  keunggulan, sederhana,  ukurannya  kecil,  dan portable (dapat dipindah-pindahkan di antara bermacam platform dan sistem operasi).
b. IDE Netbeans
Netbeans sebagai IDE (Interface Development Environtment) ditujukan untuk memudahkan pemrograman  interface . Memiliki  fiture  lebih  baik dari  software  sepertinya  yaitu  Module  Matisse  GUI (Graphical User Interface). Memiliki fiture debugger untuk  mengetahui  dimana  terjadi  error.  Memiliki fiture  tooltip  dimana  dapat  diketahui  cara  perbaikan untuk  error.  Berlisensikan  Sun  Public  License  atau open source.
c. Java 2 Micro Edition
Java  2  Micro  Edition  memiliki  arsitektur yang  unik,  dibangun  dengan  desain  modular  yang memungkinkan  aplikasi  yang  dibaut  dapat  di sesuaikan  dengan  keterbatasan  perangkat  telepon seluler.  J2ME  ini  terdiri  dari  lapisan-lapisan  yang terdapat di atas lapisan system operasi, dimana secara keseluruhan  lapisan  disebut  CLDC  (  Connected Limited Device Configuration ).
Keamanan pada J2ME merupakan salah satu hal yang sangat penting karena device J2ME mudah di  bawa  ke  mana-mana  ( mobile ).  Dengan  fasilitas mobile itu,  maka  sangat  mungkin device tersebut hilang dan jatuh pada tangan yang salah. Hal tersebut akan  menjadi  bencana  apabila  terdapat  data  yang penting pada device tersebut. Kemungkinan tersebut akan menjadi lebih berkurang dengan adanya sistem keamanan  yang  memadai.  Salah  satunya  adalah dengan enkripsi sebuah data.

## 2. Bouncy Castle Cryptography API
Pada  website  resminya  disebutkan  bahwa Bouncy  Castle  mwerupakan  koleksi  dari  API  yang digunakan  dalam  bidang  kriptografi.  Bouncy  Castle memiliki  API  untuk  bahasa  pemrograman  java  dan C#.  Untuk  keperluan  kriptografi  pada  java  mobile, API  ini  menyediakan  versi  lightweight.  Kelas  dasar untuk cipher didefinisikan dalam org.bouncycastle.crypto.engines  yang  di  dalamnya mengimplementasikan  operasi  enkripsi  dan  dekripsi dari  berbagai  jenis  cipher  dasar,  antara  lain  AES, BlowFish, Camelia, Casts, DES, Elgamal, Gost, dan masih banyak lagi.
Dalam  API  ini  juga  digunakan  banyak  mode operasi dalam enkripsi dan dekripsinya, salah satunya adalah  mode  CBC.  Mode  CBC  mendekripsikan bagaimana  cipher  harus  memperlakukan  rangkaian block  ketika  mengenkripsikan  pesan  multi  block. Mode  CBC  merupakan  mode  yang  memiliki kecepatan  tinggi  dan  merupakan  mode  yang  paling banyak diaplikasikan pada berbagai program.

## 3. Diagram Model Use Case
Pengertian  use  case  sendiri  adalah  urutan langkah-langkah  yang  secara  tindakan  saling  terkait (skenario) baik terotomatisasi maupun secara manual, untuk  tujuan  melengkapi  satu  tugas  bisnis  tunggal. Use case selalu di awali dengan sebuah notasi actor atau pelaku yang merupakan bagian dari luar system dan  selalu  berhubungan  dengan  system  yang  akan dibangun.

## 4. Diagram Kelas
Diagram  kelas  menunjukakan  interaksi antara  kelas  di  dalam  system.  Definisi  kelas  sendiri menurut Pressman adalah bagian dari desain sebuah system  dan  di  dalam  system  eksis  sebagai  aksi eksekusi.  Kelas  menggambarkan  himpunan  obyek yang  menggunakan  atribut  suatu  system,  sekaligus menawarkan  layanan  untuk  memanipulasi  keadaan tersebut  (metoda/fungsi).  Sedangkan  diagram  kelas menggambarkan struktur dan dekripsi class, p[ackage dan  obyek  beserta  hubungan  satu  sama  lain  seperti containment, pewarisan, asosiasi, dan lain-lain 5. Sequence Diagram
Sequence diagram menggambarkan interaksi  antar  objek  di dalam  dan  di  sekitar  sistem (termasuk  pengguna,  display,  dan  sebagainya) berupa  message  yang digambarkan terhadap  waktu. Sequence  diagram  terdiri  atar  dimensi  vertikal (waktu)  dan  dimensi  horizontal  (objek-objek  yang terkait).
Sequence  diagram  biasa  digunakan  untuk menggambarkan  skenario  atau  rangkaian  langkah- langkah yang dilakukan sebagai respons dari sebuah event  untuk  menghasilkan  output  tertentu.  Diawali dari  apa  yang  men-trigger  aktivitas  tersebut,  proses dan  perubahan  apa  saja  yang  terjadi  secara  internal dan output apa yang dihasilkan.
6. Kriptografi
a. Definisi Kriptogafi Kriptogafi  ( cryptography )  berasal  dari Bahasa  Yunani:  “crypto”  artinya  “s ecret ”  (rahasia), sedangkan  “ graphein ”  artinya  “ writing ”  (tulisan). Jadi,  kriptografi  berarti  “ secret  writing ”  (tulisan rahasia).  Definisi  yang  dipakai  di  dalam  buku-buku yang  lama  (sebelum  tahun  1980-an)  menyatakan bahwa kriptogafi adalah ilmu dan seni untuk menjaga kerahasiaan  pesan  dengan  cara  menyandikannya  ke dalam  bentuk  yang  tidak  dapat  dimengerti  lagi maknanya
Menurut  Sukmaaji  dan  Rianto  (2008,  h.  5), dijelaskan  juga  definisi  Kriptografi    sebagai  ilmu untuk menjaga keamanan data dengan cara mengacak data sedemikian rupa, sehingga tidak bisa dibaca oleh pihak ketiga. Tentu saja data yang diacak harus bisa dikembalikan  ke  bentuk  semula  oleh  pihak  yang berwenang. Data yang ingin di acak biasanya disebut Teks  Asli  ( Plain  Text ).  Data  di  acak  dengan menggunakan  kunci  enkripsi  ( Encryption  Key ). Proses  pengacakan  disebut  Enkripsi  ( Encryption ). Plain  Text  yang  telah  diacak  disebut  Cipher  Text. Kemudian proses untuk mengembalikan Cipher Text ke  Plain  Text  disebut  Dekripsi  ( Decryption ).  Kunci yang  digunakan  pada  tahap  Dekripsi  disebut  Kunci Dekripsi ( Decryption Key ).
b. Algoritma Kriptografi
Algoritma  kriptografi  disebut  juga cipher yaitu aturan untuk enchipering dan dechipering , atau fungsi  matematika  yang  digunakan  untuk  enkripsi dan dekripsi. Beberapa cipher memerlukan algoritma yang berbeda untuk enciphering dan dechipering . Konsep  matematis  yang  mendasari  algorotma kriptogafi  adalah  relasi  antara  dua  buah  himpunan yaitu himpunan yang berisi elemen-elemen plaintext dan  himpunan  yang  berisi ciphertext .  Enkripsi  dan dekripsi merupakan fungsi yang memetakan elemen- elemen  yang  memetakan  kedua  himpunan  tersebut. Misalkan P menyatakan plaintext dan C menyatakan chipertext ,  maka  fungsi  enkripsi  E  memetakan  P  ke C,

## E(P) = C
Dan fungsi dekripsi D memetakan C ke P, D(E(P)) = P
Kriptogafi  modern  mengatasi  masalah enkripsi dan dekripsi dengan penggunaan kunci, yang dalam hal ini algoritma tidak lagi dirahasiakan, tetapi kunci harus dijaga kerahasiaannya. Kunci( key ) adalah parameter  yang  digunakan  untuk  transformasi enchipering dan dechipering . Kunci biasanya berupa string  atau  deretan  bilangan.  Dengan  menggunakan
kunci  K,  maka  fungsi  enkripsi  dan  dekripsi  dapat ditulis sebagai
E K (P) = C dan DK(C) = P
dan kedua fungsi ini memenuhi D K (E K (P)) = P

## c. Kriptografi dengan Fungsi XOR
Berbeda dengan algoritma kriptografi visual pada umumnya, model ini menggunakan fungsi XOR untuk  algoritma  enkripsi  dan  dekripsinya.  Oleh karena  itu,  proses  dekripsi  tidak  bisa  dilakukan dengan hanya menumpuk transparansi.
Fungsi  XOR  dapat  dijelaskan  dalam  table berikut.
Persamaan : Z = X  Y Tabel 2.2.3.1.1. Fungsi XOR
X Y Z 0 0 0 0 1 1 1 0 1
1 1 0
Skema  yang  telah  dikembangkan  untuk kriptografi dengan fungsi XOR ialah ( 2,n ) dan ( n,n ). Untuk skema ( n , n ), dapat diperoleh hasil rekonstruksi atau dekripsi  citra yang sempurna, sama dengan citra rahasia  yang  dienkripsi.  Adapun  untuk  skema  ( 2,n ), terdapat noise pada citra yang dihasilkan.
d. Mode Operasi CBC
CBC  merupakan  salah  satu  mode  operasi cipher blok  yang  menerapkan  umpan  balik  pada sebuah blok. Caranya, blok plainteks yang current di- XOR -kan  terlebih  dahulu  dengan  blok  cipherteks hasil  enkripsi  sebelumnya,  selanjutnya  hasil  peng- XOR -an  ini  masuk  ke  dalam  fungsi  enkripsi. Sedangkan  pada  proses  dekripsi  dilakukan  dengan memasukkan blok cipherteks yang current ke fungsi dekripsi, kemudian  meng- XOR -kan  hasilnya dengan blok  cipherteks  sebelumnya.  Dengan  CBC,  setiap blok  cipherteks  bergantung  tidak  hanya  pada  blok plainteksnya, tetapi juga pada seluruh blok plainteks sebelumnya.  Gambar  2.2.3.2.1  memperlihatkan skema mode operasi CBC.
Pada  mode  CBC,  blok-blok  plainteks  yang sama  tidak  menghasilkan  blok-blok  plainteks  yang sama, sehingga kriptanalis menjadi lebih sulit. Hal ini menyebabkan  mode  CBC  lebih  banyak  digunakan. Secara  matematis,  enkripsi  dengan  mode CBC dinyatakan sebagai
C i = E K ( P i  C i – 1 ) dan dekripsi sebagai
P i = D K ( C i )  C i – 1
(a)Enkripsi (b)Dekripsi

## Gambar 6.a. Skema enkripsi dan dekripsi
dengan Mode CBC

## METODOLOGI PENELITIAN
Metode  yang  digunakan  dalam  penelitian  ini  antara lain:
1. Study Literatur (Tinjauan Pustaka) Pencarian  dan  pengumpulan  literatur  yang mendukung  untuk  penulisan  antara  lain  enkripsi dekripsi  dan  yang  terkait  dengan  perangkat mobile.
2. Observasi penggunaan dan pembuatan program Pencarian akan kebutuhan alat serta file API apa saja  untuk  membangun  program,  permasalahan yang  timbul,  penanggulangan  yang  dibutuhkan saat pembuatan aplikasi.
3. Analisis dan Perancangan Sistem Akan  dilakukan  analisis  kebutuhan  sistem  yang akan  dibangun  dengan  pembuatan  progran enkripsi dan dekripsi.
4. Implementasi dan Uji Coba Sistem Rancangan  program  dapat  dinyatakan  berhasil bila program tersebut dapat berjalan sesuai tujuan. Maka  dilakukan  implementasi  dan  uji  coba program  yang  dibangun  untuk  memastikan kelayakan sistem.
Kebutuhan Sistem Aplikasi CryptoImage merupakan  sebuah system  yang  akan  dibangun  dengan  beberapa komponen  system,  seperti  data  masukan  ( input ), fungsi  ( method ),  data  keluaran  ( output ),  dan antarmuka  system  ( interface ).  Semua  komponen tersebut akan saling berhubungan sehingga terbentuk sebuah system.
1. Data Masukan ( input ) Data masukan merupakan data yang akan diolah oleh  system  sehingga  menjadi  data  keluaran. Dalam  aplikasi  ini,  akan  menerima  sebuah inputan  berupa  data  gambar  yang  ada  pada telepon genggam. Dengan beberapa fungsi input, data  tersebut  akan  diubah  menjadi  data  keluaran yang  berupa  data  gambar  yang  terenkripsi  pada proses  enkripsi  dan  data  gambar  yang  telah didekripsikan pada proses dekripsi.
2. Fungsi ( method )
Fungsi  merupakan  aturan  atau  tata  cara  aplikasi mengolah  data  masukan  berupa  data  gambar menjadi  data  keluaran  berupa  data  gambar  yang terenkripsi pada proses enkripsi dan data gambar yang  telah  didekripsikan  pada  proses  dekripsi. Fungsi  ini  dibuat  sehingga  aplikasi  hanya  akan menjalankan perintah berdasarkan instruksi yang telah ditentukan.
3. Data Keluaran ( Output )
Data keluaran  merupakan data  yang ditampilkan kepada pengguna system setelah dilakukan proses oleh  fungsi-fungsi  yang  ada  di  dalam  aplikasi. Data  keluaran  hanya  akan  ditampilkan  setelah melalui  proses  yang  telah  di  instruksikan  dalam aplikasi.  Data  keluaran  yang  dihasilkan  berupa data gambar yang terenkripsi pada proses enkripsi dan  data  gambar  yang  telah  didekripsikan  pada proses dekripsi.
4. Antarmuka ( interface )
Aplikasi ini dibuat dengan tampilan Graphic User Interface (GUI)  yang  disesuaikan  dengan kebutuhan, untuk memudahkan pengguna aplikasi dalam mengoperasikannya.

## HASIL DAN PEMBAHASAN 1. Aliran Kerja Analisa
Aplikasi  ini  dibangun  untuk  memenuhi kebutuhan  pengguna  telepon  genggam  dalam menjaga  keamanan  data  gambar  yang  tersimpan dalam  memori  telepon  genggam  agar  terhindar  dari pembajakan oleh pihak yang tidak diinginkan.
Aliran kerja analisa dari aplikasi CryptoImage ini meliputi fungsional modelling yaitu rancangan  system  yang  akan  dibangun  ( use  case Diagram ),  entity  class  modelling  yaitu  rancangan obyek  ( class  Diagram ),  interaction  modelling  yaitu rancangan integrasi antar obyek ( sequence Diagram ).
a. Fungsional Modeling
Fungsional  modelling  dilakukan  untuk mendekripsikan use case. Use case digunakan untuk melihat interaksi antara system dengan pengguna atau disebut actor.
Rancangan  aplikasi  yang  akan  dibangun disini  dijelaskan  siapa  saja  yang  berperan  ketikan aplikasi  dijalankan  dan  apa  saja  yang  dapat dilakukan.  Gambar  1.a.  menjelaskan  mengenai business logic dari aplikasi.
D K D K x x K K C i-2 P i-1 P i C i C i-1 E K E K x x K K C i-2 P i-1 P i C i C i-1
Gambar 1.a. Use Case Diagram Aplikasi  ini  didesain  hanya  untuk  satu pengguna  dalan  satu  device.  Dalam  sebuah  mobile device,  aplikasi  yang  terinstal  sebuah  aplikasi  saja dan tidak melibatkan aplikasi-aplikasi yang lain.
b. Entity Class Modeling
Aplikasi  ini  tersusun  atas  beberapa  obyek penyusun yang menjadi dasar pembangunan aplikasi. Oyek-obyek  tersebut  saling  menghubungkan  antara obyek satu dengan lainnya, tergantung fungsi-fungsi dan  method  yang  menghubungkan.  Berikut  gambar 1.b. rancangan obyek yang menyusun aplikasi.
Gambar 1.b. Class Diagram

## c. Interaction Modeling
Interaksi  antar  obyek  dalam  dan  di  sekitar system termasuk pengguna dan antarmuka pengguna dijelaskan  dalam  sequence  diagram.  Dari  sequence diagram,  alur  aplikasi  akan  kelihatan,  sehingga mempermudah programming agar lebih terarah. Langkah-langkah menjalankan proses enkripsi pada aplikasi CryptoImage:
1. main menu ditampilkan,
2. pengguna memilih menu penyandian gambar atau gallery,
3. memilih  menu  penyandian  gambar,  pengguna diminta  melakukan  konfirmasi  (”yes”)  dengan mengklik OK,
4. pengguna  memilih  encrypt  untuk  melakukan proses  pencarian  gambar,  mengenkripsikan gambar  kemudian  menampilkan  gambar  yang terenkripsi,
5. pengguna  mengklik  save  untuk  melakukan penyimpanan data gambar terenkripsi,
6. klik cancel untuk mengakhiri proses dan kembali ke main menu,
7. memilih menu gallery untuk melihat data gambar yang telah tersimpan dalam memory,
Apabila  konfirmasi(“No”),  maka  akan kembali ke main menu dan pengguna dapat memilih menu pada main menu.
Input Image plain Save Image Encrypt Image ViewGalle ry Input Image chiper Delete Image Save Image Decrypt Image Pengguna <<exten d>> <<inclu de>> <<include>> CryptoImage <<exten d>> Gambar Attributes Operations Public Gambar()
Public boolean  Save (byte image[]) Public byte[*] Load ()
Public Kriptografi get Kriptografi()
Public void set Kriptografi
(Kriptografi val) Public Save get Save()
Public void set Save(Save val) Public boolean Delete(int id)
Kriptografi
Attributes
Private String Kunci
Operations
Public Kriptografi(String Kunci) Public String Enkripsi (byte image[]) Public  byte  [*]Dekripsi  (String Chiper) Public String get Kunci() Public void set Kunci (String Kunci)

## CryptoImage Attributes
Private List PenyandianGambar Private List Gallery Private List Confirm
Operations Public CryptoImage() Public Confirm(“Yes”,”No”, List.OK) Public Gambar get Gambar()
Public void set Gambar(Gambar val) Save Kriptografi Save Attributes
Private RecordStore store Private String storage
Private int amount Operations
Save(String storage, int amount) RecordStore get store() Boolean open() void close() void Delete() void saveRecord() StringreadRecord() Crypto
Image Gambar
CryptoImage Kriptograf i Save Memilih encrypt untuk pencarian dan mengenkripsikan gambar(String Enkripsi()) Memilih menu penyandian gambar(Public CryptoImage()) dan melakukan konfirmasi (confirm(“yes”)) Gambar Melakukan penyimpanan data gambar yang telah dienkripsi(save Record()) Akhiri proses enkripsi(void close()) Memilih menu gallery(Public CryptoImage()) Melihat data gambar yang tersimpan dalam memori(String readRecord()) Konfirmasi(Con firm(”No”))kem bali ke main menu Apply( )
Gambar 1.c. Sequence Diagram Enkripsi gambar
Untuk  melakukan  proses  dekripsi  gambar sama  dengan  proses  enkripsi.  Langkah-langkah menjalankan proses dekripsi pada aplikasi CryptoImage:
1. main menu ditampilkan,
2. pengguna memilih menu penyandian gambar atau gallery,
3. memilih  menu  penyandian  gambar,  pengguna diminta  melakukan  konfirmasi  (”yes”)  dengan mengklik OK,
4. pengguna  memilih  decrypt  untuk  melakukan proses  pencarian  gambar,  mendekripsikan gambar  kemudian  menampilkan  gambar  yang telah didekripsi,
5. pengguna  mengklik  save  untuk  melakukan penyimpanan data gambar yang telah didekripsi,
6. klik cancel untuk mengakhiri proses dan kembali ke main menu,
7. memilih menu gallery untuk melihat data gambar yang telah tersimpan dalam memory,
Apabila  konfirmasi(“No”),  maka  akan kembali ke main menu dan pengguna dapat memilih menu pada main menu
Gambar 1.d Sequence Diagram Dekripsi gambar

## 2. Implementasi Antar Muka
Untuk  implementasi  antar  muka,  aplikasi akan  diuji  dengan  menggunakan  dua  buah emulator yaitu Sun Java(TM) Wireless Toolkit 2.5.2 for CLDC dan  S80  3rd  Edition  SDK  FP  1  for  MIDP.  Hal  ini bertujuan  untuk  memperoleh  data-data  yang  akurat mengenai  aplikasi  baik  pada  tahap  pengkodean maupun  uji  coba  sebelum  digunakan  pada  telepon genggam yang sebenarnya.
Tujuan dilakukannya pengujian terhadap suatu perangkat  lunak  adalah  untuk  mengetahui  apakah aplikasi  telah  berjalan  sesuai  dengan  rancangan pembuatan aplikasi. Pengujian aplikasi ini dilakukan dengan  menguji  apakah  aplikasi  berjalan  sesuai dengan sasaran aplikasi yaitu skenario setiap use case yang telah dibuat. Pengujian dilakukan pada dua buah lingkungan  yang  berbeda  yaitu  yang  pertama dilakukan  menggunakan emulator pada  computer desktop  dan  yang  kedua  dilakukan  pada  telepon genggam yang sesungguhnya.
Pengujian  pertama  menggunakan  emulator agar memudahkan dalam mendeteksi kesalahan pada tahap  pengkodean  dan  mem-build  aplikasi.  Jika aplikasi  telah  berjalan  sesuai  dengan  perancangan, maka  tingkat  kesalahan  dapat  diminimalkan.  Pada tahap pengujian ini aplikasi bisa berjalan tanpa perlu memikirkan sumber daya.
a.  Antar Muka Form
Gambar 2.a. Tampilan Antar Muka Menu Utama
Tampilan  form  menu  utama  sebagai MainMIDlet  untuk  mulai  menjalankan  aplikasi. Pilihan  list  Penyandian  Gambar  merupakan  menu untuk  melakukan  proses  enkripsi  dan  dekripsi gambar. Sementara menu Gallery merupakan tempat penyimpanan data gambar.
CryptoImage Kriptografi Save
Melakukan proses pencarian gambar dan mendekripsikan gambar(String Dekripsi()) Memilih menu penyandian gambar(Public CryptoImage()) dan melakukan konfirmasi (confirm(“yes”)) Gambar Melakukan penyimpanan data gambar yang telah didekripsi(save Record()) Akhiri proses dekripsi(void close()) Memilih menu gallery(Public CryptoImage()) Melihat data gambar yang tersimpan dalam memori(String readRecord()) Konfirmasi(Conf irm(”No”))kemb ali ke main menu Apply( )
Gambar 2.b. Tampilan Antar Muka Confirm
Tampilan  form  confirm  sebagai  konfirmasi bahwa  pengguna  akan  melakukan  penyandian gambar yaitu melakukan proses enkripsi dan dekripsi gambar.  Apabila  konfirmasi  gagal  dilakukan  maka akan kembali ke menu utama
Gambar 2.c. Tampilan Antar Muka Cryptography
Tampilan  form  ini  terdapat  dua  buah  list yang  merupakan  menu  untuk  melakukan  proses enkripsi dan dekripsi gambar
Gambar 2.d. Tampilan Antar Muka Form Encrypt
Tampilan form encrypt, menampilkan gambar yang  akan  dienkripsi.  Gambar  ditampilakn  dengan menggunakan canvas .  Tombol prosess digunakan untuk  mulai  melakukan  enkripsi  gambar  dan  akan tersimpan dalam RMS.
Gambar 2.d. Tampilan Antar Muka Form File Encrypt
Tampilan form file encrypt, akan dilakukan penyimpanan  gambar  yang  telah  dienkripsi.    Pada form  ini  juga  dapat  dilakukan  dekripsi  atau mengembalikan gambar ke dalam bentuk semula atau plain .

## 3. Aplikasi CryptoImage
Aplikasi CryptoImage memiliki  delapan kelas.  Semua  kelas  memiliki  fungsi  masing-masing antara lain:
No Nama Kelas File Source Code Fungsi 1. MainMidlet CryptoIma ge.java Kelas  utama  untuk  menjalankan  method StartApp(), PauseApp(), DestroyApp() 2. Galeri Gallery.jav a Berisi  data  gambar  yang  terdapat  dalam database (RMS) 3. Enkri psi Enkripsi.ja va Berisi  tampilan  data  gambar  yang  telah dienkripsi 4. Dekripsi Dekripsi.ja va Berisi  tampilan  data  gambar  yang  telah didekripsi 5. Menu Utama MenuUta ma.java Berisi pilihan menu enkripsi dan dekripsi 6. Save Save.java Berisi  beberapa  method  yang  selalu digunakan  aplikasi  yaitu  method  Save(), Delete(int id) dari RMS 7. Kriptografi Kriptografi .java Berisi  dua  buah  method  yaitu  method enkripsi(byte[*]Image) dan method dekripsi() 8. Gambar G Berisi method yang akan menghubungkan antara  kelas  interface  dengan  kelas Kriptografi.java dan Save.java Tabel 3.a. Kelas Aplikasi CryptoImage

## 4. Instalasi MIDlet ke Dalam Telepon Seluler
Terdapat  beberapa  cara  untuk  melakukan instalasi  terhadap  aplikasi  MIDlet  yang  dibuat  ke dalam  telepon  seluler  (handphone)  :  infrared, bluetooth,  maupun  serial  (kabel  data).  Berikut langkah yang perlu dilakukan:
a. Untuk  membuat  file  JAR  pilih  menu Project  |
Package  |  Create  Package dari  jendela
Ktoolbar,  maka  file  JAR  akan  terbentuk  pada direktori  bin.  Untuk  memindahkan  MIDlet  ke ponsel  yang  sesungguhnya  dapat  digunakan koneksi  bluetooth,  GPRS,  ataupun  inframerah. Dalam  prakteknya,  ada  beberapa  ponsel  yang hanya  membutuhkan file JAR  saja, namun ada pula  yang  membutuhkan  file  JAD  dan  JAR dalam proses instalasi aplikasi pada ponsel.
b.   Dari dalam handphone, pilih file JAR/JAD yang baru  saja  dicopy.  Secara  otomatis,  AMS (Application  Management  Software)  akan memunculkan  menu  “Install”  pada  layar handphone.  Pilih  menu  tersebut  untuk  melalui proses instalasi. Sampai disini user sudah dapat menjalankan aplikasi tersebut dari handphone.

## 5.      Uji Coba Aplikasi
Pengujian kedua yaitu pada lingkungan yang sebenarnya dalam hal ini adalah mobile phone . Pada tahap  ini,  hal  utama  yang  sering  menjadi  kendala adalah menejemen memory. Karena memory menjadi salah  satu  pertimbangan  utama  dalam  membangun aplikasi  yang  berjalan  pada  ponsel.  Pengujian  pada tahap  pertama  maupun  tahap  kedua  diharapkan mendapatkan  hasil  yang  sama. Uji  coba  aplikasi berguna  dilakukan  untuk  menganalisa  kelayakan sistem yang dibangun.
Pengujian  pada  imulator  dan  telepon seluler  terdapat  perbedaan  pada  tombol.  Pada imulator,  tombol  dapat  dipilih  langsung  ketika  akan melakukan  eksekusi.  Akan  tetapi  pada  telepon seluler, pengguna harus memilih menu pilihan untuk mengetahui proses eksekusi selanjutnya.
File gambar yang digunakan pada waktu uji coba  adalah  file  gambar  dengan  ekstensi  file  .jpeg, .png,  dan  .gif.  Hasil  uji  coba  dengan  file  gambar dengan ekstensi file .jpeg dan .png didapatkan  hasil enkripsi  yang  baik  sementara  untuk  file  gambar dengan ekstensi file .gif didapatkan hasil yang kurang baik.

## KESIMPULAN DAN SARAN Kesimpulan
Dari  hasil  pembuatan  dan  pengujian  diambil kesimpulan bahwa :
1.   Program  dapat  dijalankan  pada  emulator  yang telah disediakan.
2.   Program  dapat  dijalankan  pada  device  /  alat mobile device yang sesungguhnya.
3.  Terdapat  perbedaan  tampilan  pilihan  untuk melakukan proses eksekusi pada aplikasi.
4.  File gambar yang digunakan pada waktu uji coba adalah  file  gambar  dengan  ekstensi  file  .jpeg, .png, dan .gif.
5.  Hasil uji coba dengan file gambar dengan ekstensi file .jpeg dan .png didapatkan hasil enkripsi yang baik sementara untuk file gambar dengan ekstensi file .gif didapatkan hasil yang kurang baik.
6.  Keterbatasan emulator dan  fasilitas  lingkungan pengembang untuk platform J2ME
menyebabkan  sulitnya  proses debugging .  IDE Netbeans telah
menyediakan
sebuah
debugger yang  terintegrasi,  namun  ketika dijalankan  menggunakan  emulator  yang  lain, belum tentu support untuk testing program ini.
7.  Agar  aplikasi  ini  dapat  berjalan  pada  device mobile  sesuai  dengan  yang  diharapkan,  maka pada  saat  uji  coba  digunakan imulator java wireless toolkit 2.5.2 for CLDC dan imulator dari IDE Neatbeans.

## Saran
Setelah  membangun  aplikasi  ini,  didapatkan beberapa saran penting dalam upaya pengembangan aplikasi ini nantinya dan dalam upaya pengembangan J2ME. 1. Pengembangan Aplikasi
Jika  nanti  ada  yang  mengembangkan  aplikasi CryptoImage ini,  ada  beberapa  hal  yang  perlu diperhatikan: a. Untuk memudahkan anda mendebug, gunakan  saja  emulator  asli  bawaan  IDE Netbeans karena sudah mendukung penggunaan  gambar.  Aplikasi  ini  apabila menggunakan gambar, layar akan menyesuaikan  pada  emulator  dan mobile phone . b. Untuk menyempurnakan
aplikasi
CryptoImage , pengembang
dapat menggunakan xml untuk membuat tampilan lebih menarik.
2. Untuk pengembangan lingkungan J2ME
a. Mendefinisikan metode dan kelas apa yang tersedia dalam platform tertentu.
b. Hindari  alokasi  dan  dealokasi  data  yang berulang-ulang

## DAFTAR PUSTAKA
[1] Aditya Hartanto, Antonius, 2004, Pemrograman Mobile
Java dengan MIDP 2.0 , Yogyakarta, Penerbit Andi.
[2] Ariyus, Doni, 2008, Kriptografi, Yogyakarta, Penerbit Andi.
[3]  Dharwiyanti,  S.,  dan  Wahono,  R.S.,  2006,  Pengantar Unified
Modelling Language (UML),
http://www.ilmukomputer.org/wp.content .
[4] Hakim, R., dan Sutarto, 2009, Mastering Java TM , Jakarta, Elex Media Komputindo.
[5] Introduction to UML With Microsoft Visio, http://angew.info/files/Tutorial_UML/Model_Worksh op_UML_bab2.pdf .
[6] JENI, Pengenalan Bahasa Java,
http://poss.ipb.ac.id/files/JENI_Intro1_Bab02_Pengen alan_Bahasa_Java.pdf .
[7] Kisjantoro, A.I., 2007, Java ME, http://Kur2003.if.itb.ac.id/files/IF_2281_J2ME_MIDP .pdf .
[8]  Knudsen,    J.,  2003,  Wireless  Java  Developing  with J2ME, Second Edition, Apress, Barkeley.
[9] Pengantar Kriptografi, http://www.informatika.org/~rinaldi/Buku/Kriptografi/ Bab-1_Pengantar_Kriptografi.pdf .
[10] Raharjo, B., dkk, 2007, Tuntunan Pemrograman Java untuk Handphone, Bandung, Informatika.
[11] Setianto, Dwi, 2006, Panduan Lengkap Pemrograman Celluler  Device  dengan  J2ME,  Yogyakarta,  Ardana Media.