• Tidak ada hasil yang ditemukan

Implementasi Algoritma Hill Cipher 3x3 dan Rabin Public Key pada Pengiriman Short Message Service (SMS)

N/A
N/A
Protected

Academic year: 2017

Membagikan "Implementasi Algoritma Hill Cipher 3x3 dan Rabin Public Key pada Pengiriman Short Message Service (SMS)"

Copied!
24
0
0

Teks penuh

(1)

LAMPIRAN A : LISTING PROGRAM

1.

splash.java

import android.app.Activity; import android.os.Bundle; import android.content.Intent;

import android.content.pm.ActivityInfo; import android.view.Window;

public class Splash extends Activity { protected int splash_ = 1000; @Override

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

this.requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_splash);

//getSupportActionBar().hide();

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); setSplash();

}

public void setSplash() { new Thread() {

public void run() { try {

Thread.sleep(2000); } catch (Exception e) {

}

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

startActivity(i); }

}.start(); }

}

2.

BuatPesan.java

import android.app.Activity;

import android.content.ContentValues; import android.content.Intent;

import android.database.Cursor; import android.net.Uri;

import android.os.Bundle;

import android.provider.ContactsContract;

import android.provider.ContactsContract.CommonDataKinds.Phone; import android.telephony.SmsManager;

import android.text.TextUtils; import android.util.Log; import android.view.View;

import android.view.View.OnClickListener; import android.widget.Button;

import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import java.util.Random;

public class BuatPesan extends Activity {

EditText nomorKontak, text, hasilencrypt, kunci_p_enk, kunci_q_enk, kuncihill_enk, hasilencryptkunci;

TextView pubkey, nilaiK; // contact picker

private static final int CONTACT_PICKER_RESULT = 1001;

private long waktumulaihill, waktuakhirhill, selisihhill, waktumulairabin;

// phonecontact

public void doLaunchContactPicker(View view) {

(2)

Intent contactPickerIntent = new Intent(Intent.ACTION_PICK, uri); startActivityForResult(contactPickerIntent, CONTACT_PICKER_RESULT); }

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

(3)

long temp = binary % 10;

decimal += temp * Math.pow(2, power); binary = binary / 10;

power++; }

}

return decimal; }

public boolean fermat(int p) { boolean hasil = true; Random rand = new Random(); int a = rand.nextInt(20) + 1; if (a % p == 0) {

hasil = false;

} else if (modExp(a, p - 1, p) != 1) { hasil = false;

}

return hasil; }

public static int modExp(int a, int b, int n) { if (b == 0) return 1;

long t = modExp(a, b / 2, n); long c = (t * t) % n;

if (b % 2 == 1) c = (c * a) % n; return (int) c; }

@Override

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

this.setTitle("Encrypt Message");

setContentView(R.layout.buatpesan);

final Button send = (Button) findViewById(R.id.send); final Button encrypt = (Button) findViewById(R.id.encrypt);

final Button encryptkunci = (Button) findViewById(R.id.encryptkunci); text = (EditText) findViewById(R.id.smsBox);

nomorKontak = (EditText) findViewById(R.id.nomorHp); hasilencrypt = (EditText) findViewById(R.id.hasilEncrypt);

hasilencryptkunci = (EditText) findViewById(R.id.hasilEncryptkunci); kunci_p_enk = (EditText) findViewById(R.id.kunci_p_enk);

kunci_q_enk = (EditText) findViewById(R.id.kunci_q_enk); kuncihill_enk = (EditText) findViewById(R.id.KunciHill_enk); pubkey = (TextView) findViewById(R.id.pubkey);

nilaiK = (TextView) findViewById(R.id.Kvalues);

Intent i = getIntent();

if (i.getStringExtra("message") != null) { text.setText(i.getStringExtra("message")); }

encryptkunci.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View arg0) { // TODO Auto-generated method stub

waktumulairabin = System.currentTimeMillis(); String enkunciaes = "";

String keyx = kuncihill_enk.getText().toString(); String p = kunci_p_enk.getText().toString(); String q = kunci_q_enk.getText().toString(); try {

if (TextUtils.isEmpty(keyx)) {

kuncihill_enk.setError("Your key is Empty"); } else if (TextUtils.isEmpty(p)) {

kunci_p_enk.setError("Private Keys cannot Empty"); } else if (TextUtils.isEmpty(q)) {

kunci_q_enk.setError("Private Keys cannot Empty"); } else if (!p.matches("[0-9]*")) {

(4)

} else if (!q.matches("[0-9]*")) {

kunci_q_enk.setError("Private Keys must be a Number"); } else if (p.equals(q)) {

kunci_p_enk.setError("Private Keys must be Different"); } else if (!fermat(Integer.parseInt(p))) {

kunci_p_enk.setError("Private Key must be a Prime Number");

} else if (!fermat(Integer.parseInt(q))) {

kunci_q_enk.setError("Private Key must be a Prime Number");

} else if (Integer.parseInt(p) % 4 != 3) {

kunci_p_enk.setError("Private Keys must have modulus 3 when devide by 4");

} else if (Integer.parseInt(q) % 4 != 3) {

kunci_q_enk.setError("Private Keys must have modulus 3 when devide by 4");

} else {

long startTime = System.currentTimeMillis(); int uvw = Integer.parseInt(p);

int xyz = Integer.parseInt(q); long publickey = uvw * xyz;

pubkey.setText("public key :" + publickey); //tabelEnc obj1 = new tabelEnc();

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

//Toast.makeText(getApplicationContext(), "ke: "+i+"ms", Toast.LENGTH_LONG).show();

char b = keyx.charAt(i);

int plain = tabelEnc.getIndex(b); String double_text = toBinary(plain) + toBinary(plain);

long double_dectext = Long.parseLong(double_text); long m = toDecimal(double_dectext);

long k = (m - (m % publickey)) / publickey; nilaiK.setText(nilaiK.getText() + " " + k); SimpanKunci.setKkey(String.valueOf(k)); long c = (long) (Math.pow(m, 2) % publickey); SimpanKunci.setCipherkey(String.valueOf(c));

hasilencryptkunci.setText(hasilencryptkunci.getText() + " " + c);

}

// obj2 = new simpanVariabel();

long endTime = System.currentTimeMillis(); long duration = (endTime - startTime);

Toast.makeText(getApplicationContext(), "Encryption Time: " + duration + "ms", Toast.LENGTH_LONG).show();

}

} catch (Exception e1) {

Toast.makeText(BuatPesan.this, enkunciaes, Toast.LENGTH_LONG).show();

e1.printStackTrace(); }

//hasilencryptkunci.setText(enkunciaes); }

});

encrypt.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View e) {

String ambilKata = text.getText().toString();

String kunci_enk_hill = kuncihill_enk.getText().toString(); String enKata = "";

try {

if ((kuncihill_enk.getText().toString().equals("") || text.getText().toString().equals(""))) {

Toast.makeText(BuatPesan.this, "Pesan ataupun kunci tidak boleh kosong",

Toast.LENGTH_SHORT).show(); } else {

(5)

waktumulaihill = System.currentTimeMillis(); hillCipher obj = new hillCipher();

double sq = Math.sqrt(kunci_enk_hill.length());

System.out.println("ini double " + sq + " ini long " + (long) sq + " ini int " + (int) sq);

if (sq != (long) sq)

System.out.println("panjang kunci salah"); //0+3TLeT*9[I.MV5hk1z%z mOTR$QB>U

else {

int s = (int) sq;

if (obj.check(kunci_enk_hill, s)) { System.out.println("Result:");

obj.divide(ambilKata, s); //pakai kunci ASCII dari 32-126

System.out.println("ini ya guys :" + obj.hasilenkripsi);

Log.i("Kata Asal", ambilKata); enKata = obj.hasilenkripsi; Log.i("Kata Hasil", enKata); obj.cofact(obj.keymatrix, s);

System.out.print("inversi key " + obj.invkey); }

}

hasilencrypt.setText(enKata);

waktuakhirhill = System.currentTimeMillis(); selisihhill = waktuakhirhill - waktumulaihill;

Toast.makeText(BuatPesan.this, "lama enkripsi Hill Cipher " + Long.toString(selisihhill), Toast.LENGTH_SHORT).show();

}

} catch (Exception e1) { e1.printStackTrace(); }

} });

send.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

String pesan = hasilencrypt.getText().toString(); String nomor = nomorKontak.getText().toString(); if (pesan.length() > 0 && nomor.length() > 0) { try {

// proses kirim sms

SmsManager sms = SmsManager.getDefault();

sms.sendTextMessage(nomor, null, pesan, null, null);

// proses simpan sms yang terkirim

ContentValues values = new ContentValues(); values.put("address", nomor);

values.put("body", pesan); getContentResolver().insert(

Uri.parse("content://sms/sent"), values);

Toast.makeText(BuatPesan.this,

"Pesan berhasil dikirim", Toast.LENGTH_SHORT) .show();

finish();

} catch (Exception e) {

Toast.makeText(BuatPesan.this, "Pesan gagal dikirim", Toast.LENGTH_SHORT).show();

e.printStackTrace(); }

} else {

Toast.makeText(BuatPesan.this,

"Nomor atau Isi Pesan Masing Kosong", Toast.LENGTH_SHORT).show();

(6)

3.

LihatPesan.java

import android.app.Activity;

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

import android.net.Uri; import android.os.Bundle; import android.util.Log; import android.view.View;

import android.view.View.OnClickListener; import android.widget.Button;

import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import java.nio.charset.Charset; import java.util.Random;

public class LihatPesan extends Activity {

private static final Charset UTF8_CHARSET = Charset.forName("UTF-8"); final int tipe_enkripsi=128;

private long

selisihhill,waktuawalhill,waktuakhirhill,selisihrabin,waktuawalrabin,waktuakhirrab in,selisihtotal;

TextView number, date, msg,hasilDekripsi;

Button forward, hapus,dekripsi,dekripsikunci,btndekriphill;

EditText kunci_p_dek,kunci_q_dek,nilai_k,kuncihill_Dek,hasildekkuncihill; public boolean pil_rad=true;

@Override

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

setContentView(R.layout.lihatpesan); this.setTitle("Decrypt Message");

number = (TextView) findViewById(R.id.tvNumber); date = (TextView) findViewById(R.id.tvDate); msg = (TextView) findViewById(R.id.tvMsg);

hasilDekripsi = (TextView) findViewById(R.id.hasildekrip); dekripsi = (Button) findViewById(R.id.dekripsiBtn); forward = (Button) findViewById(R.id.btFrd);

btndekriphill=(Button) findViewById(R.id.btnDekripkunci); hapus = (Button) findViewById(R.id.hapus);

kunci_p_dek = (EditText) findViewById(R.id.kunci_p_dek); kunci_q_dek = (EditText) findViewById(R.id.kunci_q_dek);

hasildekkuncihill=(EditText) findViewById(R.id.hasildekkuncihill); kuncihill_Dek = (EditText) findViewById(R.id.kuncihill_dek); nilai_k = (EditText)findViewById(R.id.k_values);

kuncihill_Dek.setText(SimpanKunci.getCipherkey()); nilai_k.setText(SimpanKunci.getKkey());

btndekriphill.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View arg0) { // TODO Auto-generated method stub int a_inv = 0;

int flag = 0;

waktuawalrabin=System.currentTimeMillis();

String ambilkata2 = kuncihill_Dek.getText().toString(); String kunci_dek = kunci_p_dek.getText().toString(); String temp="";

String hasil2 = null; try {

String keyx = SimpanKunci.getCipherkey(); String p = kunci_p_dek.getText().toString(); String q = kunci_q_dek.getText().toString(); String k = SimpanKunci.getKkey();

if ("".equals(keyx)) {

kuncihill_Dek.setError("Your Cipherkey is Empty"); } else if ("".equals(p)) {

(7)
(8)

long Sfinal = Long.parseLong(SS);

dekripsi.setOnClickListener(new OnClickListener() {

(9)

} }

double sqt = Math.sqrt(keyaes_dek.length()); System.out.println("ini double "+sq+" ini long "+(long)sq+" ini int "+(int)sq);

if (sqt != (long) sqt)

System.out.println("panjang kunci salah"); //0+3TLeT*9[I.MV5hk1z%z mOTR$QB>U

else {

int s = (int) sqt;

if (obj1.check(keyaes_dek, s)) {

System.out.println("Result:");

obj1.divide(ambilKata, s); //pakai kunci ASCII dari 32-126

System.out.println("ini ya wee :"+obj1.hasilenkripsi);

deKata=obj1.hasilenkripsi; obj1.cofact(obj1.keymatrix, s);

System.out.print("inversi key "+obj1.invkey); }

}

waktuakhirhill=System.currentTimeMillis(); hasilDekripsi.setText(deKata);

selisihhill=(waktuakhirhill-waktuawalhill); selisihtotal=selisihhill+selisihrabin;

Toast.makeText(LihatPesan.this, "waktu dekrips Hill Cipher "+Long.toString(selisihtotal),Toast.LENGTH_SHORT).show();

} else{

Toast.makeText(LihatPesan.this, "PlainText Kunci Hill masih kosong",Toast.LENGTH_SHORT).show();

}

} catch (Exception e) {

Log.i("Error", e.getMessage());hasilDekripsi.setText("kunci tidak memenuhi GCD atau tidak memenuhi syarat inversi modulo ");}

} }); }

@Override

protected void onStart() { super.onStart(); Intent i = getIntent();

number.setText(i.getStringExtra("no")); date.setText(i.getStringExtra("date")); msg.setText(i.getStringExtra("msg"));

forward.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

Intent click = new Intent(LihatPesan.this, BuatPesan.class); click.putExtra("message", msg.getText());

startActivity(click);

} });

hapus.setOnClickListener(new OnClickListener() { @Override

public void onClick(View v) {

Dialogs.showConfirmation(LihatPesan.this, R.string.hapuspesan_dialog,

new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {

Intent i = getIntent(); String id_pesan_hapus = i

(10)

String id_thread_hapus = i

.getStringExtra("idthread");

// hapus pesan

Uri deleteUri = Uri.parse("content://sms");

getContentResolver() .delete(deleteUri,

"thread_id=? and _id=?", new String[] {

String.valueOf(id_thread_hapus),

String.valueOf(id_pesan_hapus) });

finish();

Toast.makeText(LihatPesan.this,

"Pesan Terhapus", Toast.LENGTH_SHORT) .show();

// redirect data pesan onBackPressed(); }

}); }

});

}

public String toBinary(long n) { if (n == 0) {

return "0"; }

String binary = ""; while (n > 0) { long rem = n % 2; binary = rem + binary; n = n / 2;

}

return binary; }

public long toDecimal(long binary){ long decimal = 0;

long power = 0; while(true){

if(binary == 0){ break; } else {

long temp = binary%10;

decimal += temp*Math.pow(2, power); binary = binary/10;

power++; }

}

return decimal; }

public static int[] gcd(int p, int q) { if (q==0)

return new int[] { p, 1, 0 }; int[] vals = gcd(q, p % q); int d = vals[0];

int a = vals[2];

int b = vals[1] - (p / q) * vals[2]; return new int[] { d, a, b }; }

public static int modExp(int a, int b, int n) { if (b == 0) return 1;

long t = modExp(a, b/2, n); long c = (t*t)%n;

(11)

return (int)c; }

public boolean check(String x){ boolean hsl = true;

int a = Math.round(x.length()/2); for(int i=0; i<a; ++i)

if (x.charAt(i)!=x.charAt(i+a)) hsl=false;

return hsl; }

public boolean fermat(int p){ boolean hasil=true;

Random rand = new Random(); int a=rand.nextInt(20)+1; if (a%p==0){

hasil=false; }

else if (modExp(a,p-1,p)!=1){ hasil=false;

}

return hasil; }

public String singlebin(String x){ String n="";

for(int y=0; y<Math.floor(x.length()/2); y++){ n= n+x.charAt(y);

}

return n; }

@Override

public void onBackPressed() {

Intent link = new Intent(LihatPesan.this, DataPesan.class); Intent i = getIntent();

link.putExtra("tipepesan", i.getStringExtra("asal")); startActivity(link);

}}

4.

MainActivity.java

import android.os.Bundle; import android.view.View;

import android.view.View.OnClickListener; import android.view.Window;

import android.widget.Button; import android.app.Activity; import android.content.Intent;

public class MainActivity extends Activity { //Button tentang, bantuan;

@Override

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

this.requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main);

((Button) findViewById(R.id.btnPesanbaru)).setOnClickListener(new OnClickListener() {

public void onClick(View v) {

MainActivity.this.startActivity(new Intent( MainActivity.this, BuatPesan.class)); }

});

((Button) findViewById(R.id.btnPesankeluar)).setOnClickListener(new OnClickListener() {

public void onClick(View v) {

(12)

startActivity(click); }

});

((Button) findViewById(R.id.btnPesanmasuk)).setOnClickListener(new OnClickListener() {

public void onClick(View v) {

Intent click = new Intent(MainActivity.this, DataPesan.class);

click.putExtra("tipepesan", "inbox"); startActivity(click);

} });

((Button) findViewById(R.id.btnBantuan)).setOnClickListener(new OnClickListener() {

@Override

public void onClick(View arg0) { // TODO Auto-generated method stub

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

} });

((Button) findViewById(R.id.btnTentang)).setOnClickListener(new OnClickListener() {

@Override

public void onClick(View arg0) { // TODO Auto-generated method stub

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

} });

((Button) findViewById(R.id.btnKeluar)).setOnClickListener(new OnClickListener() {

public void onClick(View v) {

Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME);

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent);

System.exit(0); }

}); } }

5.

DataPesan.java

import java.util.Date; import java.text.DateFormat; import android.app.Activity;

import android.content.ContentResolver; import android.content.Intent;

import android.database.Cursor; import android.net.Uri;

import android.os.Bundle;

import android.provider.ContactsContract;

import android.support.v4.widget.SimpleCursorAdapter; import android.widget.AdapterView;

import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView;

import android.widget.TextView; import android.view.View;

(13)

private SimpleCursorAdapter dataAdapter;

@Override

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

setContentView(R.layout.listpesan); this.setTitle("List Message"); displayListView();

}

private void displayListView() { Intent i = getIntent(); Uri uriSMS = Uri

.parse("content://sms/" + i.getStringExtra("tipepesan"));

Cursor cursor = getContentResolver().query(uriSMS, null, null, null,

null);

String[] columns = new String[] { "address", "body", "date" };

int[] to = new int[] { R.id.pengirim, R.id.isipesan, R.id.waktu };

dataAdapter = new SimpleCursorAdapter(this, R.layout.pesan_row, cursor,

columns, to, 0);

ListView listView = (ListView) findViewById(R.id.listView1);

dataAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {

@Override

public boolean setViewValue(View view, Cursor cursor, int columnIndex) {

// ubah nomer hape dengan nama yang ada dikontak

if (columnIndex == 2) {

TextView tv = (TextView) view; String pengirimDB =

cursor.getString(cursor

.getColumnIndex("address"));

// get contact name

Uri contactUri = Uri.withAppendedPath(

ContactsContract.PhoneLookup.CONTENT_FILTER_URI,

Uri.encode(pengirimDB)); Cursor cur =

getContentResolver().query(contactUri, null,

null, null, null); ContentResolver contect_resolver = getContentResolver();

int size = cur.getCount(); if (size > 0 && cur != null) {

for (int i = 0; i < size; i++) { cur.moveToPosition(i);

String id1 = cur.getString(cur

(14)

Cursor phoneCur = contect_resolver

.query(contactUri,

null,

ContactsContract.CommonDataKinds.Phone.CONTACT_ID

+ " = ?",

new String[] { id1 }, null);

if (phoneCur.moveToFirst()) {

String namaKontak = phoneCur.getString(phoneCur

.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAM E));

phoneCur.close();

tv.setText(namaKontak);

} else {

tv.setText(pengirimDB);

}

}

cur.close(); } else {

tv.setText(pengirimDB); }

return true; }

// konversi tanggal if (columnIndex == 4) {

TextView tv = (TextView) view;

String waktu = cursor.getString(cursor .getColumnIndex("date")); long l = Long.parseLong(waktu);

Date d = new Date(l); String date =

DateFormat.getDateInstance(DateFormat.LONG)

.format(d); String time =

DateFormat.getTimeInstance().format(d);

String view_waktu = date + " " + time;

tv.setText(view_waktu);

return true; }

return false; }

});

(15)

// jika di pesan di klik, maka akan dialihkan ke lihat pesan secara full

listView.setOnItemClickListener(new OnItemClickListener() { @Override

public void onItemClick(AdapterView<?> listView, View view,

int position, long id) { // Get the cursor, positioned to the corresponding row in the

// result set

Cursor cursor = (Cursor) listView.getItemAtPosition(position);

// Get the state's capital from this row in the database.

String view_pengirim = cursor.getString(cursor

.getColumnIndexOrThrow("address"));

String view_isipesan = cursor.getString(cursor .getColumnIndexOrThrow("body"));

String waktu = cursor.getString(cursor

.getColumnIndexOrThrow("date"));

// konversi tanggal

long l = Long.parseLong(waktu); Date d = new Date(l);

String date = DateFormat.getDateInstance(DateFormat.LONG)

.format(d); String time =

DateFormat.getTimeInstance().format(d);

String view_waktu = date + " " + time;

String view_idpesan = cursor.getString(cursor .getColumnIndexOrThrow("_id")); String view_thread = cursor.getString(cursor

.getColumnIndexOrThrow("thread_id"));

Intent click = new Intent(DataPesan.this, LihatPesan.class);

// get contact name

Uri contactUri = Uri.withAppendedPath(

ContactsContract.PhoneLookup.CONTENT_FILTER_URI,

Uri.encode(view_pengirim)); Cursor cur =

getContentResolver().query(contactUri, null, null, null, null);

ContentResolver contect_resolver = getContentResolver();

int size = cur.getCount(); if (size > 0 && cur != null) {

for (int i = 0; i < size; i++) { cur.moveToPosition(i);

String id1 = cur.getString(cur

.getColumnIndexOrThrow(ContactsContract.Contacts._ID));

Cursor phoneCur = contect_resolver

(16)

null,

ContactsContract.CommonDataKinds.Phone.CONTACT_ID

+ " = ?", new String[] { id1 },

null);

if (phoneCur.moveToFirst()) { String namaKontak = phoneCur.getString(phoneCur

.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAM E));

phoneCur.close(); click.putExtra("no", namaKontak);

} else {

click.putExtra("no", view_pengirim);

}

}

cur.close(); } else {

click.putExtra("no", view_pengirim); }

// kirim data ke view pesan

click.putExtra("msg", view_isipesan); click.putExtra("idpesan", view_idpesan); click.putExtra("idthread", view_thread); click.putExtra("date", view_waktu); Intent i = getIntent();

click.putExtra("asal", i.getStringExtra("tipepesan"));

startActivity(click); }

}); }

@Override

public void onBackPressed() {

Intent link = new Intent(DataPesan.this, MainActivity.class);

startActivity(link); finish();

} }

6.

hillCipher.java

public class hillCipher { int keymatrix[][]; int linematrix[]; int resultmatrix[]; String hasilenkripsi = ""; String invkey = "";

public String divide(String temp, int s) { while (temp.length() > s) {

String sub = temp.substring(0, s); temp = temp.substring(s, temp.length()); perform(sub);

}

(17)

else if (temp.length() < s) {

for (int i = temp.length(); i < s; i++) temp = temp + ' ';

perform(temp); }

return hasilenkripsi; }

//E>Ybm=PNu

public void perform(String line) { linetomatrix(line);

linemultiplykey(line.length()); result(line.length());

}

public void keytomatrix(String key, int len) { keymatrix = new int[len][len];

int c = 0;

for (int i = 0; i < len; i++) { for (int j = 0; j < len; j++) {

keymatrix[i][j] = (tabelEnc.getIndex(key.charAt((3*i)+j))); System.out.print(keymatrix[i][j] + " ");

c++; }

System.out.println(); }

}

public void linetomatrix(String line) { linematrix = new int[line.length()]; for (int i = 0; i < line.length(); i++) {

linematrix[i] = (tabelEnc.getIndex(line.charAt(i))); }

}

public void linemultiplykey(int len) { resultmatrix = new int[len]; for (int i = 0; i < len; i++) { for (int j = 0; j < len; j++) {

resultmatrix[i] += keymatrix[i][j] * linematrix[j]; }

resultmatrix[i] %= 97; }

}

public void result(int len) { //System.out.print("len "+len); String result = "";

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

hasilenkripsi += tabelEnc.getChar(resultmatrix[i]); }

}

public boolean check(String key, int len) { keytomatrix(key, len);

int d = determinant(keymatrix, len); int mod = 97;

while (d < 0) { d = d + 97; mod = mod + 97; }

d = d % 97;

if (d == 0) {//YH)&F(lZ;

System.out.println("Invalid key!!! Key is not invertible because determinant=0...");

return false; }

else {

return true; }

}

(18)
(19)

{

inv[i][j] = b[i][j] % 97; if (inv[i][j] < 0) inv[i][j] += 97; inv[i][j] *= mi; inv[i][j] %= 97; }

}

matrixtoinvkey(inv, r); }

public int mi(int d) {

int q, r1, r2, r, t1, t2, t; r1 = 97;

r2 = d; t1 = 0; t2 = 1;

while (r1 != 1 && r2 != 0) {

q = r1 / r2; r = r1 % r2; t = t1 - (t2 * q); r1 = r2;//"ay&k1F N r2 = r;

t1 = t2; t2 = t; }

return (t1 + t2); }

public void matrixtoinvkey(int inv[][], int n) {

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

for (int j = 0; j < n; j++) {

invkey += (tabelEnc.getChar(inv[i][j])); }

} }}

7.

tabelEnc.java

/**

* Created by Fitri on 16/04/2016. */

public class tabelEnc { static char tabel[] =

{'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T',' U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o' ,'p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8',' 9',' ','.',',','@','#','$','%','&','-','+','(',')','*','"','\'',':',';',

'!','?','_','/','~','|','^','=','{','}','\\','[',']','<','>','®','€','©'};

public static int getIndex(char x) { for (int i=0;i<97;i++) {

if (x == (tabel[i])){ return i;

} }

return -1; }

public static char getChar(int x) { return tabel[x];

(20)

8.

SimpanKunci.java

public class SimpanKunci {

private static String cipherkey="", Kkey = ""; public static void setCipherkey(String c){ cipherkey += c + " ";

}

public static String getCipherkey(){

return cipherkey; }

public static void setKkey(String c){

Kkey += c + " "; }

public static String getKkey(){

return Kkey; }

public static void Reset(){ cipherkey = "";

Kkey = ""; }

}

9.

Dialog.java

import android.app.AlertDialog; import android.content.Context;

import android.content.DialogInterface;

import android.content.DialogInterface.OnClickListener;

public class Dialogs {

public static void showConfirmation(Context context, int message, OnClickListener onYes) {

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder( context);

// set title

alertDialogBuilder.setTitle(R.string.confirmation);

// set dialog message alertDialogBuilder

.setMessage(message) .setCancelable(false)

.setPositiveButton("Ya", onYes) .setNegativeButton("Tidak",

new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int id) {

dialog.cancel(); }

});

// create alert dialog

AlertDialog alertDialog = alertDialogBuilder.create();

// show it

alertDialog.show(); }

(21)

10.

bantuan.java

import android.app.Activity; import android.os.Bundle;

public class bantuan extends Activity { @Override

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

setContentView(R.layout.bantuan); this.setTitle("Help");

} }

11.

tentang.java

import android.app.Activity; import android.os.Bundle;

public class tentang extends Activity { @Override

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

setContentView(R.layout.tentang); this.setTitle("About");

(22)

D

AFTAR

R

IWAYAT

H

IDUP

C

URRICULUM

V

ITAE

I.

D

ATA

P

RIBADI

/

Personal Identification

Nama Lengkap

: Fitri Rahmadhani

Tempat/Tgl. Lahir : Medan / 28 Februari 1995

Jenis Kelamin

: Perempuan

Agama

: Islam

Kebangsaan

: Indonesia

Alamat

: Jalan AR Hakim Gg.Nangka No.42 A Medan Area,

Medan, Sumatera Utara, Indonesia 20216

Telepon

: +6285277328530

Moto Hidup

: Bermanfaat bagi Orang Lain

Email

: [email protected]

II.

K

EMAMPUAN

/ Capabilities

Bahasa

: Bahasa Indonesia, Bahasa Inggris

Bahasa Pemrograman

: C#, PHP,

Java for Mobile

Database

: MySQL

Lainnya

: HTML, CSS, Photoshop, Ms. Office, Adobe Flash

III.

P

ENDIDIKAN

F

ORMAL

/ Formal Education

[ 2012

2016 ]

S1 Ilmu Komputer, Fakultas Ilmu Komputer dan Teknologi Informasi

Universitas Sumatera Utara

[ 2009

2012 ]

SMA Swasta Eria Medan

[ 2006

2009 ]

SMP Swasta Al Washliyah Medan

[ 2000

2006 ]

SD Swasta Nurhasanah Medan

IV.

P

ENDIDIKAN

N

ON

-

FORMAL

/ Informal Education

[ 2001

2006 ]

Ta’limul Qur’an Lil Aulad (TQA) Al

- Fauzi, Medan

[ 2011

2012 ]

Ganesha Operation, Medan.

V.

P

RESTASI

/ Achievements

1)

Delegasi dari Indonesia di Young ICT Leaders Forum, Busan, Korea Selatan [2015]

2)

Pengajar Muda Gerakan USU Mengajar [2014]

3)

Finalis Desain ARTechno Universitas Sumatera Utara [2014]

4)

Juara 2 Desain Poster “

Islamic Booming

” Aladiyansyah Expo Universitas Sumatera Utara

[2014]

5)

Juara 2 Desain Poster “

Keep Health Tooth

” Mukernas FKG Nasional [2014]

6)

Juara 3 Fotografi “

Healhty Smile

” Mukernas FKG Nasional [2014]

7)

Honorable Participant Of SGC English Universitas Sumatera Utara [2014]

8)

Juara 3 Menulis Puisi untuk Ibu Universitas Sumatera Utara [2013]

(23)

VI.

P

ENGALAMAN

K

ERJA

/ Working Experience

1)

Desainer Grafis di Mitra Jaya Solusindo, Medan [2016]

2)

Asisten Laboratorium di Ilmu Komputer

Laboratory Center (IKLC) Fasilkom-TI USU,

Medan [2013-2016]

3)

Volunteer Desain di WWF Indonesia [2016]

VII.

P

ENGALAMAN

B

ERBICARA

/ Speaking Experience

1)

Pemateri Animasi di Al-Khuwarizmi Academy Al-Khuwarizmi USU, Universitas Sumatera

Utara [2015]

2)

Pemateri Animasi di IMILKOM Goes to School, Universitas Sumatera Utara [2015]

3)

Instruktur di Training Islam Ceria dan Kreatif (TRICK), UKMI Al-Khuwarizmi Fasilkom-TI

Universitas Sumatera Utara [2014]

VIII. P

ELATIHAN DAN

S

EMINAR

/ Trainings & Workshop

1)

Peserta Pelatihan

Builiding Strong Indonesia Digitalpreneur with Distruptive Mindset

” by

Indigo in DiLo, Medan [2016]

2)

Peserta Seminar Bukalapak [2015]

3)

Peserta Pelatihan Design Top Coder Universitas Sumatera Utara [2015]

4)

Peserta Seminar dan

Workshop

Windows Phone Microsoft

Indonesia [2014]

5)

Peserta Seminar Nasional Literasi Informasi (SENARAI) Fasilkom-TI Universitas Sumatera

Utara [2014]

6)

Peserta Training Junior Multimedia dan Fundamental Graphical from KOMINFO [2014]

7)

Peserta Workshop Desain Grafis [2013]

8)

Peserta Seminar Kongres Nasional ILP2MI (Ikatan Lembaga Penalaran dan Penelitian

Mahasiswa Indonesia) Universitas Sumatera Utara [2013]

9)

Peserta Training Islam Ceria dan Kreatif, UKMI Al-Khuwarizmi, Medan [2013]

10)

Peserta Pelatihan Dasar Organisasi IMILKOM USU [2013]

11)

Peserta Pelatihan dan Kesekretariatan IMILKOM USU [2013]

12)

Peserta Seminar

Smartfren Library

“Kulik Lebih Jauh lagi Teknologi Rev B” Universitas

Sumatera Utara [2012]

13)

Peserta Seminar One Day Building Line Follower Robot Universitas Sumatera Utara [2012]

14)

Peserta Training Ramadhan UKMI AlKhuwarizmi Universitas Sumatera Utara [2012]

15)

Peserta Training dan Workshop Linux KSL (Kelompok Studi Linux) Universitas Sumatera

Utara [2012]

16)

Peserta Seminar

“Perempuan dan Ruang Publik” Universitas Sumatera Utara dan Universitas

Paramadina [2012]

17)

Peserta Pesantren Kilat Ramadhan, SMA Swasta Eria Medan [2010;2011]

XI.

P

ENGALAMAN

O

RGANISASI

/ Organizational Experiences

1)

Sekretaris Relawan TIK (Indonesian ICT Volunteers) Komisariat USU [2013

Sekarang]

2)

Manager Digital Marketing Communication AIESEC [2015

2016]

3)

Sekretaris Jenderal Pemerintahan Mahasiswa (PEMA) Fasilkom-TI Universitas Sumatera

Utara [2015

2016]

4)

Bendahara Smart Generation Community (SGC) Universitas Sumatera Utara [2014

2015]

5)

Sekretaris Komisi Pemilihan Umum (KPU) Universitas Sumatera Utara [2014-2015]

6)

Sekretaris Bidang Syiar UKMI Al-Khuwarizmi Universitas Sumatera Utara [2014-2015]

7)

Divisi Blogger Sahabat Beasiswa Untuk Negeri [2013-2014]

8)

Bendahara Kelompok Studi Linux (KSL) Universitas Sumatera Utara [2012

2013]

(24)

X.

P

ENGALAMAN

K

EPANITIAAN

/ Committee Experiences

1)

Anggota Publikasi dan Dokumentasi di Penyambutan Mahasiswa Baru Ilmu Komputer

Universitas Sumatera Utara [2014]

2)

Sekretaris di Science Competition se-Sumatera Utara [2014]

3)

Anggota Publikasi dan Dokumentasi Pekan Olahraga dan Seni (PORSENI) IMILKOM USU

[2014]

4)

Bendahara di Pesta Akbar Mentoring Universitas Sumatera Utara [2014]

5)

Wakil Sekretaris ARTechno Universitas Sumatera Utara [2014]

6)

Sekretaris Training Islam Ceria dan Kreatif (TRICK) IX UKMI Al Khuwarizmi Universitas

Sumatera Utara [2013]

7)

Tim Kreatif di Dakwah Expo 6 Universitas Sumatera Utara [2013]

8)

Panitia Pelaksana pada Pelatihan Sistem Informasi Geografis di S1 Ilmu Komputer USU

[2013]

9)

Anggota Acara di Kuliah Umum Indonesia-Jepang Universitas Sumatera Utara [2013]

10)

Tim Kreatif di Al Khuwarizmi Festival Universitas Sumatera Utara [2013]

11)

Anggota Konsumsi di Dies Natalis S1 Ilmu Komputer ke-11 Universitas Sumatera Utara

[2012]

XI.

P

ENGABDIAN

/

Social Volunteer

1)

Pengabdian SLB Yayasan Pembinaan Anak Cacat (YPAC) Relawan TIK Sumatera Utara

[2016]

2)

Pengabdian Masyarakat SMATerpadu Al-Bukhari Muslim Medan [2016]

3)

Pengabdian Masyarakat SMP Negeri 1 Binjai Sumatera Utara [2016]

4)

Gerakan 1001 Al Quran UKMI Ad Dakwah Universitas Sumatera Utara [2015]

5)

Bakti Sosial Panti Asuhan Bani Adam UKMI Al Khuwarizmi Universitas Sumatera Utara

[2014]

6)

Pengabdian Masyarakat SMA Pakam dan Tanjung Morawa Sumatera Utara [2014]

7)

Bakti Sosial Gunung Sinabung Relawan TIK Sumut [2014]

8)

Pengabdian Masyarakat TK Uswatun Hasanah Medan Relawan TIK Sumatera Utara [2013]

XI.

P

ROJEK YANG TELAH DIKERJAKAN

/ Portofolio Project

1)

Website

“Sewa Kost”

Projek Pemrograman Internet

2)

IKLC Portal Projek Pemrograman Visual dengan C#

3)

Animasi Company Profile UKMI Al Khuwarizmi Projek Pengajaran Berbantuan Komputer

4)

Aplikasi

Chef’s

Key Projek Mobile Programming

5)

Website “Desa Jatikusuma Namorambe” Projek Sistem Manajemen Database Lanjutan

6)

Website KOM A Directory Projek Sistem Informasi

7)

Interface Design Game Faster Android Projek Kinyu Dev

8)

Interface Design Portal IKLC for Mobile Projek IKLC Dev

XIV. L

AINNYA

/ Others

1)

Penerima Beasiswa Peningkatan Prestasi Akademik Fasilkom-TI USU [2013

2014]

2)

Peserta Olimpiade Nasional Kimia di SMA Negeri 4 Medan [2011]

Referensi

Dokumen terkait

Kepala Dinas Penanaman Modal dan pelayanan Terpadu Satu Pintu Kota Banjarmasin3. Se

Tarif UKT Program Diploma dan Sarjana sebagaimana dimaksud dalam Pasal 3 huruf b, mengikuti ketentuan Peraturan Menteri Riset, Teknologi dan Pendidikan Tinggi

Berdasarkan Berita Acara Hasil Pelelangan oleh Pokja Pengadaan Barang II Unit Layanan Pengadaan (ULP) Kabupaten Klaten Nomor :.. Paket Pekerjaan (terlampir), Daftar

Secara historis, arus pendidikan Islam Indonesia pada awal abad ke- 20 mengalami diferensiasi dan pembelahan yang tajam, yaitu dengan kehadiran gerakan modern Islam

Seluruh adik – adik FISIKA USU stambuk 2014, 2015 dan 2016 dan juga Seluruh teman – teman di Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sumatera Utara, Medan

• Bila subclass yang diturunkan dari abstract y g class tidak mengimplementasikan isi semua method abstrak parent class, maka subclass tersebut harus tetap dideklarasikan abstract..

Panjang tangkai mayang betina diukur dengan menggunakan meteran, mulai dari pangkal tangkai yang menempel di batang sampai bertemu dengan rangkaian buah pertama. Lingkar

Informan Kalau itu sebenarnya kenapa, karena strategi marketnya udah benar kenapa kita masuk pasar LCGC intinya sih secara keseluruhan dulu itu logo Nissan sama dengan logo