• Tidak ada hasil yang ditemukan

Implementasi Algoritma Vernam Cipher dalam Skema Three-Pass Protocol untuk Pengamanan Citra Bitmap Berbasis Android

N/A
N/A
Protected

Academic year: 2017

Membagikan "Implementasi Algoritma Vernam Cipher dalam Skema Three-Pass Protocol untuk Pengamanan Citra Bitmap Berbasis Android"

Copied!
8
0
0

Teks penuh

(1)

LISTING PROGRAM

Menu Proses

package com.example.skripsii;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException;

import java.io.OutputStreamWriter; import java.text.SimpleDateFormat; import java.util.ArrayList;

import java.util.Date; import java.util.Random; import android.app.Activity; import android.app.AlertDialog;

import android.content.DialogInterface; import android.content.Intent;

import android.database.Cursor; import android.graphics.Bitmap;

import android.graphics.Bitmap.Config; import android.graphics.BitmapFactory; import android.graphics.Color;

import android.graphics.drawable.BitmapDrawable; import android.net.Uri;

import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; import android.util.Log;

import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.Toast;

public class Sender extends Activity implements View.OnClickListener {

public int SELECT_PICTURE = 1; public String selectedImagePath; public double mse1,psnr1;

ArrayList<Integer> kunci1,kunci2;

ImageView img, imgc1, imgc2, imgc3, imgdekrip; Bitmap bmp;

Integer baris,kolom;

EditText nama, size1, size2, mse, psnr;

Button btn_pilih, btn_kunci1, btn_kunci2, btn_proses1, btn_proses2, btn_proses3, btn_dekrip, btn_reset;

@Override

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

setContentView(R.layout.sender);

(2)

imgc3 = (ImageView)findViewById(R.id.img_c3);

imgdekrip = (ImageView)findViewById(R.id.img_dekripsi); nama = (EditText)findViewById(R.id.et_nama);

size1 = (EditText)findViewById(R.id.et_size1); size2 = (EditText)findViewById(R.id.et_size2); mse = (EditText)findViewById(R.id.et_mse); psnr = (EditText)findViewById(R.id.et_psnr);

btn_pilih = (Button)findViewById(R.id.button_pilih); btn_pilih.setOnClickListener(this);

btn_kunci1 = (Button)findViewById(R.id.button_kpengirim); btn_kunci1.setOnClickListener(this);

btn_kunci2 = (Button)findViewById(R.id.button_kpenerima); btn_kunci2.setOnClickListener(this);

btn_proses1 = (Button)findViewById(R.id.button_c1); btn_proses1.setOnClickListener(this);

btn_proses2 = (Button)findViewById(R.id.button_c2); btn_proses2.setOnClickListener(this);

btn_proses3 = (Button)findViewById(R.id.button_c3); btn_proses3.setOnClickListener(this);

btn_dekrip = (Button)findViewById(R.id.button_dekripsi); btn_dekrip.setOnClickListener(this);

btn_reset = (Button)findViewById(R.id.button_reset); btn_reset.setOnClickListener(this);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true;

}

public void onActivityResult(int requestCode, int resultCode, Intent data) {

if (resultCode == RESULT_OK) {

if (requestCode == SELECT_PICTURE) {

Uri selectedImageUri = data.getData();

selectedImagePath = getPath(selectedImageUri); nama.setText(selectedImageUri.toString());

try {

File f = new File(selectedImagePath); bmp = BitmapFactory.decodeStream(new

FileInputStream(f));

if (f.getPath().endsWith(".bmp")) { img.setImageBitmap(bmp);

} else {

nama.setText(""); size1.setText(""); size2.setText("");

img.setImageBitmap(null);

Toast.makeText(getBaseContext(), "Silahkan pilih gambar dengan ekstensi .bmp",

Toast.LENGTH_SHORT).show(); }

(3)

size1.setText(x.toString()); size2.setText(y.toString());

if ((bmp.getWidth() > 1000) && (bmp.getHeight() > 1000 )) {

nama.setText(""); size1.setText(""); size2.setText("");

img.setImageBitmap(null);

Toast.makeText(getBaseContext(), "Resolusi Gambar diatas 1000x1000 piksel, silahkan pilih gambar yang lebih kecil dari 1000x1000 piksel",

Toast.LENGTH_SHORT).show(); }

}

catch (FileNotFoundException e){ e.printStackTrace();

} } } }

public String getPath(Uri uri) { if( uri == null ) { return null; }

String[] projection = { MediaStore.Images.Media.DATA }; Cursor cursor = managedQuery(uri, projection, null,

null, null);

if( cursor != null ){ int column_index =

cursor.getColumnIndexOrThrow(MediaStore.Images.Medi a.DATA);

cursor.moveToFirst();

String path = cursor.getString(column_index); cursor.close();

return path; }

return uri.getPath(); }

public void onClick(View v) { if (v == btn_pilih) {

Intent intent = new Intent(); intent.setType("image/*");

intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(Intent.createChooser(intent,"Sele ct Picture"), SELECT_PICTURE);

}

else if(v == btn_kunci1) {

kunci1 = new ArrayList<Integer>(); Random rand = new Random();

Bitmap bitmap =

((BitmapDrawable)img.getDrawable()).getBitmap();

for(int i=0; i<bitmap.getHeight()*bitmap.getWidth();i++) {

kunci1.add(rand.nextInt(256)); }

(4)

Berhasil Dibuat", Toast.LENGTH_SHORT).show(); }

else if(v == btn_kunci2) {

kunci2 = new ArrayList<Integer>(); Random rand = new Random();

Bitmap bitmap =

((BitmapDrawable)img.getDrawable()).getBitmap();

for(int i=0;

i<bitmap.getHeight()*bitmap.getWidth();i++)

{

kunci2.add(rand.nextInt(256));

}

Toast.makeText(getBaseContext(), "Kunci Penerima Berhasil Dibuat", Toast.LENGTH_SHORT).show(); }

else if(v == btn_proses1) {

double startTime = System.currentTimeMillis(); Bitmap bitmap =

((BitmapDrawable)img.getDrawable()).getBitmap(); Bitmap hasil = Bitmap.createBitmap(bitmap.getWidth(),

bitmap.getHeight(), Config.ARGB_8888);

int p, R, G, B, k=0;

for(int i=0; i<bitmap.getWidth();i++) {

for(int j=0; j<bitmap.getHeight();j++) {

p = bitmap.getPixel(i, j); R = Color.red(p);

G = Color.green(p); B = Color.blue(p);

hasil.setPixel(i, j, Color.argb(255, R^kunci1.get(k), G^kunci1.get(k), B^kunci1.get(k)));

k++;

} }

imgc1.setImageBitmap(hasil);

double endTime = System.currentTimeMillis();

double totalTime = (endTime - startTime) / 1000;

Toast.makeText(getBaseContext(), "Enkripsi C1 berhasil dengan waktu "+ totalTime + " sekon",

Toast.LENGTH_SHORT).show(); }

else if(v == btn_proses2) {

double startTime = System.currentTimeMillis(); Bitmap bitmap =

((BitmapDrawable)imgc1.getDrawable()).getBitmap(); Bitmap hasil = Bitmap.createBitmap(bitmap.getWidth(),

bitmap.getHeight(), Config.ARGB_8888); int p, R, G, B, k=0;

for(int i=0; i<bitmap.getWidth();i++) {

(5)

p = bitmap.getPixel(i, j); R = Color.red(p);

G = Color.green(p); B = Color.blue(p);

hasil.setPixel(i, j, Color.argb(255, R^kunci2.get(k), G^kunci2.get(k), B^kunci2.get(k)));

k++;

} }

imgc2.setImageBitmap(hasil);

double endTime = System.currentTimeMillis(); double totalTime = (endTime - startTime)/1000;

Toast.makeText(getBaseContext(), "Enkripsi C2 berhasil dengan waktu "+ totalTime + " sekon",

Toast.LENGTH_SHORT).show(); }

else if(v == btn_proses3) {

double startTime = System.currentTimeMillis(); Bitmap bitmap =

((BitmapDrawable)imgc2.getDrawable()).getBitmap(); Bitmap hasil = Bitmap.createBitmap(bitmap.getWidth(),

bitmap.getHeight(), Config.ARGB_8888);

int p, R, G, B, k=0;

for(int i=0; i<bitmap.getWidth();i++) {

for(int j=0; j<bitmap.getHeight();j++) {

p = bitmap.getPixel(i, j); R = Color.red(p);

G = Color.green(p); B = Color.blue(p);

hasil.setPixel(i, j, Color.argb(255, R^kunci1.get(k), G^kunci1.get(k), B^kunci1.get(k)));

k++;

} }

imgc3.setImageBitmap(hasil); double endTime = System.currentTimeMillis();

double totalTime = (endTime - startTime) / 1000;

Toast.makeText(getBaseContext(), "Enkripsi C3 berhasil dengan waktu "+ totalTime + " sekon",

Toast.LENGTH_SHORT).show();

}

else if(v == btn_dekrip) {

double startTime = System.currentTimeMillis(); Bitmap bitmap =

((BitmapDrawable)imgc3.getDrawable()).getBitmap(); Bitmap hasil = Bitmap.createBitmap(bitmap.getWidth(),

bitmap.getHeight(), Config.ARGB_8888); int p, R, G, B, k=0, pixelAsli, pixelHasil; int R1,G1,B1;

(6)

for(int i=0; i<bitmap.getWidth();i++) {

for(int j=0; j<bitmap.getHeight();j++) {

p = bitmap.getPixel(i, j); R = Color.red(p);

G = Color.green(p); B = Color.blue(p);

hasil.setPixel(i, j, Color.argb(255, R^kunci2.get(k), G^kunci2.get(k), B^kunci2.get(k)));

k++;

} }

for(int i=0; i<bitmap.getWidth();i++) {

for(int j=0; j<bitmap.getHeight();j++) {

pixelAsli = bmp.getPixel(i, j); pixelHasil = hasil.getPixel(i, j); R1 = Color.red(pixelAsli);

G1 = Color.green(pixelAsli); B1 = Color.blue(pixelAsli); R2 = Color.red(pixelHasil); G2 = Color.green(pixelHasil); B2 = Color.blue(pixelHasil);

mse1 = mse1 + Math.pow(R1-R2, 2) +

Math.pow(G1-G2, 2) + Math.pow(B1-B2, 2); }

mse1= 1.0/(bitmap.getWidth()*bitmap.getHeight()) * mse1;

psnr1 = 10*Math.log10(Math.pow(255, 2)/mse1);

mse.setText(Double.toString(mse1)); psnr.setText(Double.toString(psnr1)); }

imgdekrip.setImageBitmap(hasil);

double endTime = System.currentTimeMillis();

double totalTime = (endTime - startTime) / 1000;

Toast.makeText(getBaseContext(), "Dekripsi berhasil dengan waktu "+ totalTime + " sekon",

Toast.LENGTH_SHORT).show(); }

else if(v == btn_reset) {

nama.setText(""); size1.setText(""); size2.setText("");

img.setImageResource(R.drawable.noo); imgc1.setImageResource(R.drawable.noo2); imgc2.setImageResource(R.drawable.noo2); imgc3.setImageResource(R.drawable.noo2); imgdekrip.setImageResource(R.drawable.noo2); }

(7)

@Override

public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) {

case R.id.action_home:

Intent i=new Intent(Sender.this, MainActivity.class) ;

this.finish(); startActivity(i); break;

case R.id.action_tpp:

Intent a=new Intent(Sender.this, Sender.class) ; this.finish();

startActivity(a);

break;

case R.id.action_help:

Intent c=new Intent(Sender.this, Help.class) ; this.finish();

startActivity(c);

}

return super.onOptionsItemSelected(item); }

public void onBackPressed(){ exit();

}

public void exit(){

AlertDialog.Builder builder = new AlertDialog.Builder(Sender.this);

builder.setMessage("Do you want to exit ?").setCancelable(true)

.setPositiveButton("Yes",new

DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

Sender.this.finish(); } }).setNegativeButton("No", new

DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

dialog.cancel();

Toast.makeText(getBaseContext(), "Anda membatalkan perintah keluar", Toast.LENGTH_SHORT).show();

}

}).show();

}

(8)

DAFTAR RIWAYAT HIDUP

C

URRICULUM

V

ITAE

I. DATA PRIBADI /Personal Identification

Nama Lengkap : Lily Aulya Tempat/

Tgl. Lahir

: Padangsidimpuan / 26 Agustus 1995

Jenis Kelamin : Perempuan

Agama : Islam

Kebangsaan : Indonesia

Alamat : Jl. Silandit, Lk.IV, Komplek Sidimpuan Baru, Padangsidimpuan

Telepon : 085261116009

Email : [email protected]

II. KEMAMPUAN / Capabilities

Bahasa : Bahasa Indonesia, Bahasa Inggris Bahasa Pemrograman : C#, C++, PHP, Java

Database : MySQL

Lainnya : HTML, Ms. Office

III. PENDIDIKAN FORMAL / Formal Education

 [ 2013 – 2017 ] S1 Ilmu Komputer, Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara

 [ 2010 – 2013 ] SMA Negri 1 Padangsidimpuan

 [ 2007 – 2010 ] SMP Negeri 4 Padangsidimpuan

 [ 2001 – 2007 ] SD Negeri 200117 Padangsidimpuan

IV. PENDIDIKAN NON-FORMAL / Informal Education

 [ 2012 – 2013 ] Ganesha Operation, Medan

V. PELATIHAN DAN SEMINAR / Trainings & Workshop

1) Peserta Seminar Nasional “Melalui Inovasi Teknologi untuk Menciptakan Mahasiswa

Kreatif dan Mandiri”, Universitas Sumatera Utara [2017]

2) Peserta Workshop “Bank Indonesia Goes To Campus Bersama NET.”, Universitas Sumatera

Utara [2016]

3) Peserta TRANSFORMER (Training Super for Mid Level Kader), UKMI Al-Khuwarizmi, Universitas Sumatera Utara [2015]

4) Peserta Seminar Nasional Literasi Informasi (SENARAI) Fasilkom-TI Universitas Sumatera Utara [2014]

5) Peserta TRICK (Training Islam Ceria dan Kreatif), UKMI Al-Khuwarizmi, Universitas Sumatera Utara [2013]

6) Peserta Seminar “What Will You Be?” IMILKOM, Universitas Sumatera Utara [2013]

XIII. LAINNYA / Others

1) Penerima Beasiswa BBM (Bantuan Belajar Mahasiswa) [2014]

2) Penerima Beasiswa BBM (Bantuan Belajar Mahasiswa) [2016]

Referensi

Dokumen terkait

Kriptografi terbagi dua jenis yaitu kriptografi klasik dan modern. Pada penerapannya kriptografi modern lebih dipercaya oleh masyarakat sebagai teknik untuk mengamankan

Kolom KBeaufort pada tabel 4.10 merupakan kunci enkripsi dan dekripsi yang digunakan untuk algoritma Beaufort Cipher, kolom C1 merupakan hasil enkripsi pertama dengan menggunakan

Puji dan syukur kehadirat Allah SWT yang telah memberikan rahmat dan hidayah-Nya, sehingga Penulis dapat menyelesaikan penyusunan skripsi ini, sebagai syarat untuk

Bab ini berisi latar belakang pemilihan judul skripsi “ Implementasi Three-Pass Protocol dengan Kombinasi Algoritma Beaufort Cipher dan One Time Pad untuk

Pesan awal dalam sistem kriptografi disebut juga sebagai plaintext (disimbolkan dengan P), yaitu pesan asli yang akan disampaikan pengirim kepada penerima pesan.. Sedangkan

Penerapan sistem kriptografi rsa banyak kunci untuk prototipe autentikasi pengguna pada web.. Universitas

Pada pengerjaan skripsi dengan judulImplementasiAlgoritma Vernam Cipher dan Algoritma DES (Data Encryption Standard) pada Aplikasi Chatting berbasis Android, penulis menyadari

dengan metode Three-pass Protocol yang diharapkan dapat memperbaiki kelemahan algoritma Affine Cipher yang memiliki kunci yang pendek dan kelemahan Beaufort