• Tidak ada hasil yang ditemukan

1. Pilih dua buah bilangan prima sembarang, p dan q.

2. Hitung n = p q (sebaiknya p q, sebab jika p = q maka n =

p2 sehingga p dapat diperoleh dengan menarik akar pangkat dua dari n).

Listing program kelas Achat:

private OnItemClickListener friendClickListener = new

OnItemClickListener() {

public void onItemClick(AdapterView<?> av, View v, int

arg2, long arg3) {

setContentView(R.layout.enkrip1);

btnSend = (Button)

findViewById(R.id.send_button);

//buat mengirim kunci secara otomatis ke server

RSAA bb = new RSAA(256); BigInteger eee = bb.getE(); String ekey = eee.toString();

System.out.println("ekey nya :" + ekey); BigInteger ddd = bb.getD();

d_key = ddd.toString();

BigInteger Nn = bb.getN();

n_key = Nn.toString();

BigInteger p = bb.getPPPP();

System.out.println("ppppppp :" + p); BigInteger q = bb.getQQQQ();

System.out.println("qqqqqqqq :" + q);

sendMsg = ekey.replace(' ', '~');

sendMsg2 = n_key.replace(' ', '~');

friend = ((TextView) v).getText().toString();

chatService.sendMessage2(sendMsg, sendMsg2,

friend, user, "");

....

Gambar 4.11 Source Code Kelas Achat

Listing program kelas RSA

public RSAA(int bits) {

Random r = new Random();

p = BigInteger.probablePrime(bitlength, r); q = BigInteger.probablePrime(bitlength, r); n = p.multiply(q);

.... }

3. Hitung (n) = (p – 1)(q – 1).

4. Pilih kunci publik, e, yang relatif prima terhadap (n). 5. Bangkitkan kunci privat dengan menggunakan persamaan

Listing program kelas RSA

...

phi =

p.subtract(BigInteger.ONE).multiply(q.subtract(BigInteger.ONE)); e = BigInteger.probablePrime(bitlength/2, r);

while (phi.gcd(e).compareTo(BigInteger.ONE) > 0 &&

e.compareTo(phi) < 0 ) {

e.add(BigInteger.ONE); }

d = e.modInverse(phi); }

Gambar 4.13 Source Code Kelas RSA

2. Algoritma Enkripsi/Dekripsi

1. Enkripsi

1. Ambil kunci publik penerima pesan, e, dan modulus n. 2. Nyatakan plainteks m menjadi blok-blok m1, m2, …,

dalam selang

3. Setiap blok mi dienkripsi menjadi blok cidengan rumus

ci= miemod n

- Listing program kelas Achat untuk enkrip message

case R.id.send_button:

String msgIn = msgOut.getText().toString();

if(msgIn.length()<10){

System.out.println("message yg tertangkap di setup:::"+msgIn);

}else{

String simpan=msgIn.substring(0,9);

msgOut.setText("");

msgOut.setText(simpan);

System.out.println("message yg tertangkap di setup setelah d

potong:::"+msgOut.getText().toString()); }

msgIn = msgOut.getText().toString();

sendMsg = msgIn.replace(' ', '~');

chatService.sendMessage(sendMsg,

friend, user, "");

ChatArrayAdapter.add("Me : " + msgIn);

sendMsg = "";

msgOut.setText("");

break;

- Listing program kelas AchatService

....

private class sendMsg extends Thread {

private String msg, msg2;

private String to;

private String from;

private String r, k, typ;

public sendMsg(String m, String t, String n, String r) { msg = m; to = t; from = n; this.r = r; }

public void run() {

try {

char[] tanda = null;

char[] msg2 = null;

System.out.println("message yang masuk :: " + msg);

if (!kunci_ee.equals("")) {

BigInteger e_key = new

BigInteger(kunci_ee);

BigInteger n_key = new

BigInteger tes2 = new

BigInteger(msg.getBytes());

String tes22 = tes2.toString(); System.out.println("plainteks yang telah d rubah menjadi byte :: " + tes22);

RSAA bb = new RSAA(256); String sandii = "";

System.out.println("nilai e: "

+e_key);

System.out.println("nilai n: "

+n_key);

BigInteger halaa = bb.encrypt(tes2, e_key, n_key);

System.out.println("hasil enkripsi :: " + halaa);

String sandi = halaa.toString();

sendMessagePHP(sandi, to, from, r); System.out.println("message enkrip: " + sandi+"" +to+ " " + from);

} else {

System.out.println("DI ACHATSERVICE: " + to + " " + from);

} catch (Exception err) { }

}

}

- Listing program RSA untuk enkrip data

...

public synchronized BigInteger encrypt(BigInteger message , BigInteger E , BigInteger N ) {

System.out.println("masuk ke dalam method enkrip rsa ");

return message.modPow(E, N); }

....

Gambar 4.16 Source Code Kelas RSA

2. Dekripsi

1. Setiap blok cipherteks cididekripsi kembali menjadi blok mi

dengan rumus

mi= cidmod n

Listing program Achat

private OnItemClickListener friendClickListener = new

OnItemClickListener() {

public void onItemClick(AdapterView<?> av, View v, int

arg2, long arg3) {

setContentView(R.layout.enkrip1);

btnSend = (Button)

findViewById(R.id.send_button);

RSAA bb = new RSAA(256); BigInteger eee = bb.getE(); String ekey = eee.toString();

System.out.println("ekey nya :" + ekey); BigInteger ddd = bb.getD();

d_key = ddd.toString();

System.out.println("dkey nya :" + d_key); BigInteger Nn = bb.getN();

n_key = Nn.toString();

BigInteger p = bb.getPPPP();

System.out.println("ppppppp :" + p); BigInteger q = bb.getQQQQ();

System.out.println("qqqqqqqq :" + q);

sendMsg = ekey.replace(' ', '~');

sendMsg2 = n_key.replace(' ', '~');

friend = ((TextView) v).getText().toString();

chatService.sendMessage2(sendMsg, sendMsg2,

friend, user, "");

friend = ((TextView)

v).getText().toString();

setupChat();

//untuk mengambil data dari user message

chatService.getMsg2(friend, user,

"person", "run"); } };

Listing program Achat service

private class getMsg2 extends Thread {

private String to;

private String from;

private int running = 0;

private String msge = "";

private String type;

public getMsg2(String a, String n, String r) {

to = n;

from = a;

type = r; }

void setRunning(int b) {

this.running = b; }

public void run() { String rs = "";

String rsmessage = "";

EditText pho_no, isi_pesan, kunci_pub1, kunci_n, kunci_e;

EditText pesan_terjemah;

while (running != 0) {//3

try {//4

// Panggil method

rs = getMessagePHP2(from, to, type); String[] kunci = rs.split(","); System.out.println("isi rs: " + rs);

if (!rs.equals("")) {//5

//System.out.println("masuk getMessagePHP2");

//rsmessage = getMessagePHP2(from, to, type);//6

// rsmessage.getBytes(); // msg = rs.toCharArray(); String[] temp1 = rs.split(","); // // isi_pesan = // // (EditText)findViewById(R.id.editText_sendmsg); kunci_ee = temp1[0]; kunci_nn = temp1[1];

System.out.println("E::::::::::::::::::" + kunci_ee); System.out.println("N::::::::::::::::::" + kunci_nn);

//

//Toast.makeText(getApplicationContext(), "Berhasil", Toast.LENGTH_LONG).show();

} else {//7

System.out.println("masuk getMessagePHP");

rsmessage = getMessagePHP(from, to, type);

msg = rsmessage.toCharArray(); Achat.setMe(rsmessage);

System.out.println("get dkehynhya::::::::::::::::::" + Achat.getdkey()); //if (!Achat.getdkey().equals("")) { // System.out //

.println("sudah masuk ifffff::::::::::::::::::" // + rsmessage); if (msg.length > 0) {//8 for (int i = 0; i < msg.length; i++) {//9 // seperate

msg from server based on its

// order

if (msg[i] == '_') {//10

System.out.println("msge:::::cetak men::::: "+ msge);

int

temp = msge.indexOf(":");//11

String fromWHO = msge.substring(0,(temp + 2));

msge =

msge.substring((temp + 2),msge.length());

Achat.setMe(msge);

rsmessage = Achat.hasil();

rsmessage = rsmessage.concat("_"); rsmessage = fromWHO.concat(rsmessage);

msg = rsmessage.toCharArray();

System.out.println("rsmessage:::::cetak men:::::"+ rsmessage);

msge =

"";

} else {//12

System.out.println("msge:::::"+msge);

msge += msg[i]; }//13 }//for }//if 14 }//if 15 //}//16 // share msg to UI if (msg.length > 0) {//17 keluar dari if for (int i = 0; i < msg.length; i++) {//18 // seperate msg from server based on its order

System.out.println("msge:::::cetak men:::::"

+

msge);//20

mhandler.obtainMessage(Achat.MESSAGE_READ, msge)

.sendToTarget();

msge = ""; } else {//21

System.out.println("msge:::::" + msge);

msge += msg[i]; } }//22 } // sleep time sleep(250);//23

} catch (Exception err) { }

} }

}

Listing program RSA

public synchronized BigInteger decrypt(BigInteger message , BigInteger D , BigInteger N) {

System.out.println("masuk ke dalam method dekrip rsa ");

return message.modPow(D, N); }

86

BAB V

HASIL DAN PENGUJIAN

Dokumen terkait