IMPLEMENTASI DAN PENGUJIAN SISTEM
4.2. Pengujian Sistem
Pengujian dilakukan terhadap algoritma One Time Pad pada sistem kendali pintu untuk mengukur keberhasilan sistem dalam melakukan proses enkripsi dan dekripsi algoritma. Pengujian ini dilakukan dengan beberapa kriteria sebagai berikut :
1. Plainteks berupa password yang terdiri dari karakter ASCII Printable dengan panjang 10 karakter yang diinputkan secara langsung padatextboxtanpa spasi. 2. List yang digunakan adalah ASCII printableyaitu = { , !, “, #, $, %, &, ‘,
(, ), *, +, , , -, ., /, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, :, ;, <, +, >, ?, @, 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,{, |, },~} || = 95
3. Kunci One Time Pad terdiri dari karakter ASCII Printable yang dibangkitkan secara acak dengan algoritmaRandomNumber Blum Blum Shub.
4.2.1. Pengujian One Time Pad
Enkripsi yang dilakukan pada tahap ini akan menghasilkan cipherteks. Cipherteks ini terdiri 10 karakter plainteks. Pada enkripsi ini diperlukan kunci di mana panjang
karakternya juga sama dengan plainteksnya. Misalkan, kata plainteks = ‘agungagung’ dan kunci = ‘TOGGHJZMQI’. Tampilan pada sistem dapat ditunjukkan pada Gambar 4.18 (a).
(a) (b)
Gambar 4.18 Pengujian pada sistem android (a) Lock dan (b) Unlock
Gambar 4.18 (b) menunjukkan hasil enkripsi berupa cipherteks=’VW]VPLbc’Q’. Cipherteks ini didapat melalui operasi penjumlahan dari kunciOne Time Padterhadap plainteks awal. Proses Enkripsi dapat dilihat pada Tabel 4.1
Tabel 4.1 Proses Enkripsi One Time Pad
Plainteks ASCII Kunci ASCII C
= ((K+P)-127) + 32 Cipherteks a 97 T 84 86 V g 103 O 79 87 W u 117 G 71 93 ] n 110 G 71 86 V g 103 H 72 80 P a 97 J 74 76 L g 103 Z 90 98 b u 117 M 77 101 c n 110 Q 81 96 ‘ g 103 I 73 81 Q
Pada Tabel 4.1 dihasilkan cipherteks yang ditunjukkan pada kolom Cipherteks. Cipherteks ini dihasilkan dari kunci yang telah diacak oleh algoritmaBlum Blum Shub
(a)
(b)
(c)
Gambar 4.19 Pengujian hardware (a) cipherteks (b) key dan password (c) plainteks
Dekripsi yang dilakukan pada tahap ini akan menghasilkan plainteks. Plainteks ini terdiri 10 karakter cipherteks. Pada dekripsi ini diperlukan kunci dimana panjang karakternya juga sama dengan cipherteks. Misalkan, kata cipherteks = ‘VW]VPLbc’Q’ dan kunci = ‘TOGGHJZMQI’. Tampilan pada sistem dapat ditunjukkan pada Gambar 4.19 (a) dan Gambar 4.19 (b). Hasil dekripsi dari kunci dan cipherteks menghasilkan plainteks=’agungagung’ seperti terlihat pada Gambar 4.19(c).
Tabel 4.2 Proses Dekripsi One Time Pad
Cipherteks ASCII Kunci ASCII P
= ((C + 127)-32) - K ) Plainteks V 86 T 84 97 a W 87 O 79 103 g ] 93 G 71 117 u V 86 G 71 110 n P 80 H 72 103 g L 76 J 74 97 a b 98 Z 90 103 g c 101 M 77 117 u ‘ 96 Q 81 110 n Q 81 I 73 103 g
Pada Tabel 4.2 dihasilkan plainteks yang ditunjukkan pada kolom plainteks. Plainteks ini dihasilkan dari kunci yang telah diacak oleh algoritma Blum Blum Shub dan dikurangkan dengan index ASCII pada cipherteks. Hasil pengurangan bilangan itu dihitung kembali dengan rumus pada kolom P.
4.2.2 Pengujian Kompleksitas Algoritma
Pengujian ini dilakukan untuk mengetahui tingkat nilai masukan n suatu algoritma. Kompleksitas algoritma ini dapat dilihat dari kode program yang digunakan. Untuk kompleksitas algoritma enkripsiOne Time Padditunjukkan pada Tabel 4.3.
Tabel 4.3 Kompleksitas algoritma enkripsi one time pad
No Code C # C x #
1 cipher=" "; C1 1 C1
2 int temp=0; C2 1 C2
3 char c; C3 1 C3
4 for(int i= 0; i<key.length();i++){ C4 n C4n 5 temp = key.charAt(i) + plain.charAt(i); C2 n C2n
6 if(temp>126){ C5 n C5n 7 temp=(temp-126)+31;} C2 n C2n 8 c= (char) temp; C3 n C3n 9 cipher=cipher + c;} C1 n C1n T(n)=C1+C2+C3+C4n+C5n+C2n+C2n+C3n+C1n T(n)=(C1+C2+C3)n0+(C1+2C2+C3+C4+C5)n1
T(n)(n)Tabel 4.3 menunjukkan hasil dari kompleksitas algoritma dari enkripsi One Time Pad. Pada Tabel 4.3 terdapat Kolom C yaitu sebagai variabel menghitung seberapa banyak
processor melakukan komputasi. Kolom # sebagai variabel untuk menghitung kalimat (statement) program yang dieksekusi. Kolom C x # yaitu menunjukkan hasil perkalian dari C dan #. Sehingga, berdasarkan akumulasi dari kompleksitas algoritma enkripsi One Time Pad adalah (n). Kompleksitas algoritma selanjutnya adalah dekripsiOne Time Padyang ditunjukkan pada Tabel 4.5.
Tabel 4.5 Kompleksitas algoritma dekripsione time pad
No Code C # Cx #
1 scanf("%s",cipher); C1 1 C1
2 for(i=0;i<10;i++){ C2 n C2n
3 kunci[i] = (char) key[i];} C3 n C3n
4 for(i=0;i<10;i++){ C4 n C4n
5 temp=0; C5 n C5n
6 if(cipher[i]<126){ C6 n C6n
7 temp= cipher[i]+126-31;} C7 n C7n
8 plain[i] =(char) (temp -
key[i]);} C8 n C8n
9 for(i=0;i<10;i++){ C9 n C9n
10 pass[i] = (char )password[i];} C10 n C10n
11 for(i=0;i<10;i++){ C11 n C11n 12 if(plain[i]== pass[i]){ C12 n C12n 13 stat=1;}else{stat=0; break;}} C13 n C13n 14 if (stat==1){ C14 n C14n 15 flag=1;}else{ C15 n C15n 16 lcd_puts("Password salah");} C16 n C16n T(n)=C1+C2n+C3n+C4n+C5n+C6n+C7n+C8n+C9n+C10n+C11n+C12n+C13n+C14n+ C15n+C16n T(n)=(C1)n0+(C2+C3+C4+C5+C6+C7+C8+C9+C10+C11+C12+C13+C14+C15+C16)n1
T(n)(n)Tabel 4.5 menunjukkan hasil dari kompleksitas algoritma dari dekripsiOne Time Pad. Pada Tabel 4.5 terdapat Kolom C yaitu sebagai variabel menghitung seberapa banyak
processor melakukan komputasi. Kolom # sebagai variabel untuk menghitung kalimat (statement) program yang dieksekusi. Kolom C x # yaitu menunjukkan hasil perkalian dari C dan #. Sehingga, berdasarkan akumulasi dari kompleksitas algoritma dekripsiOne Time Padadalah(n).
PENUTUP
5.1. Kesimpulan
Setelah melakukan studi literatur, analisis dan perancangan dan pengujian terhadap sistem kendali pintu berbasis Android dengan menggunakan algoritmaOne Time Pad
dan Blum Blum Shub pada password sistem kendali pintu, maka dapat disimpulkan sebagai berikut:
1. Sistem ini dapat melakukan enkripsi dan dekripsi password 10 karakter dengan menggunakan algoritma One Time Pad dan algoritma Blum Blum Shub sebagai pembangkit kunci.
2. Cipherteks yang didekripsi akan mengembalikan password asli. Apabila pesan cipherteks tidak sempurna atau kunci tidak sesuai, maka password tidak akan kembali ke bentuk asli.
3. Berdasarkan perhitugan kompleksitas algoritma, kompleksitasalgoritma One Time Paddiperoleh(n).
5.2. Saran
Berikut ini adalah hal-hal yang menjadi saran dari penelitian ini atau untuk penelitian selanjutnya yang terkait:
1. Sistem ini hanya bisa diakses oleh satu user sehingga dapat dikembangkan dengan menggunakanmulti user.
2. Sistem hanya mampu melakukan enkripsi dan dekripsi 10 karakter password
sehingga diharapkan dapat menambah jumlah karakterpassword.
3. Sistem ini diharapkan dapat dikembangkan dengan tampilan antarmuka yang lebih menarik.
Ardiansyah, R. 2011.In System Programming AVR Menggunakan Koneksi Bluetooth.
Jurnal Wima: Universitas Katolik Widya Mandala Surabaya: Volume 10. No. 1.(Online)
http://journal.wima.ac.id/index.php/teknik/article/download/160/156
(5 Februari 2015).
Ariyus, D. 2008.Pengantar Ilmu Kriptografi: Teori, Analisis dan Implementasi. Andi Offset:Yogyakarta.
Budiharto, W. 2010 .Elektronik Digital dan Mikroprosesor.Andi Offset: Yogyakarta. Harahap, A.A. 2014. Implementasi Sistem Keamanan Data Menggunakan
Steganografi Teknik Pemetaan Titik Hitam dengan Pencarian Sekuensial dan Rabin Cryptosystem. Skripsi. Universitas Sumatera Utara.
Hoffstein, J., Pipher, J. & Silverman, J. H. 2008. An Introduction to Mathematical Cryptography. Springer Science: New York.
Iswanto . 2009 .Mikrokontroler AT90S2313 dengan Basic Compiler.Andi Offset: Yogyakarta.
Mollin, R. A. 2007.An Introduction to Cryptography. 2ndEdition. Chapman &
Hall/CRC: Boca Raton, Florida.
Pressman, Roger.S. 2010. Software Engineering. McGraw-Hill: New York. Paar, C. & Pelzl, J. 2010.Understanding Cryptography. Springer-Verlag: Berlin. Prameswara, G. 2013. Implementasi AlgoritmaOne Time Padpada data teks dan
Knapsackpada kunci. Skripsi. Universitas Sumatera Utara.
Sadikin, R. 2012.Kriptografi untuk Keamanan Jaringan dan Implementasinya dalam Bahasa Java. Andi Offset: Yogyakarta.
Schneier, B. 1996.Applied Cryptography: Protocols, algorithms and source code in C. 2ndEdition. John Wiley & Sons, Inc.: New Jersey.
Seniman . 2009 . Implementasi Algoritma Kriptografi AES pada Mikrokontroler ATMega32.Skripsi . Medan: Universitas Sumatra Utara.
Smart, N. 2004.Cryptography: An introduction. 3rdEdition. University of Bristol.
Susilo, D. 2010 .48 Jam Kupas Tuntas Mikrokontroler MCS51 dan AVR. Andi Offset: Yogyakarta.
Robot Sendiri. Andi Offset: Yogyakarta.
Usman . 2008 .Teknik Antarmuka dan Pemprograman Mikrokontroler AT89S52.Andi Offset: Yogyakarta.
Whitthen, et al. 2007. Metode Desain & Analisis Sistem. Edisi 7th. New York :
Listing Program A. Hardware void main(void) { PORTA.0=0; //Tampilan Home lcd_gotoxy(0,0); lcd_puts("Doorlock System"); lcd_gotoxy(0,1);
lcd_puts("One Time Pad"); delay_ms(3000);
goto awal; awal:;
//Tampilan Status DoorLock lcd_clear(); lcd_gotoxy(0,0); if(flag==0){ PORTA.0=0; lcd_puts("--LOCKED--"); delay_ms(5000); }else if(flag==1){ PORTA.0=1; lcd_puts("--UNLOCKED--"); delay_ms(5000); } delay_ms(100); while (1) { scanf("%s",req); if(strcmp(req, "lock")==0){ //lock(); lcd_clear(); lcd_gotoxy(0,0); lcd_puts("Key :"); lcd_gotoxy(0,1); lcd_puts("Password :"); delay_ms(1000);
//Input Key dan Password scanf("%s", kunci); scanf("%s", pass); lcd_clear();
//Tampilkan Key dan Password lcd_gotoxy(0,0);
lcd_puts(kunci); lcd_gotoxy(0,1); lcd_puts(pass); delay_ms(1000);
//Simpan password ke EEPROM for(i=0;i<sizeof(pass);i++){
password[i]= pass[i];
lcd_buff[i]= (char) password[i]; }
//Tampilkan Passsword dari EEPROM lcd_clear(); lcd_gotoxy(0,0); lcd_puts(lcd_buff); delay_ms(1000); */
//Simpan Key ke EEPROM
for(i=0;i<sizeof(kunci);i++){ key[i]= kunci[i];
lcd_buff[i]= (char) key[i]; }
/*
//Tampilkan Key dari EEPROM lcd_clear(); lcd_gotoxy(0,0); lcd_puts(lcd_buff); delay_ms(1000); */ //Status Lock flag=0; goto awal;
}else if(strcmp(req, "unlock")==0){ //unlock(); lcd_gotoxy(0,0); lcd_puts("Password :"); delay_ms(1000); scanf("%s",cipher); lcd_puts(cipher); delay_ms(1000); lcd_clear();
//Ambil Key dari EEPROM for(i=0;i<10;i++){
kunci[i] = (char) key[i]; lcd_buff[i]=kunci[i]; } /*lcd_gotoxy(1,0); lcd_puts(lcd_buff); delay_ms(3000); lcd_clear();*/ //Dekripsi Cipherteks for(i=0;i<10;i++){ temp=0; if(cipher[i]<126){ temp= cipher[i]+126-31; }
plain[i] =(char) (temp - key[i]); lcd_buff[i]=plain[i]; } //Hasil Dekripsi lcd_gotoxy(0,0); lcd_puts(lcd_buff); delay_ms(3000); lcd_clear();
for(i=0;i<10;i++){
pass[i] = (char )password[i]; lcd_buff[i]=pass[i]; } /* lcd_gotoxy(0,0); lcd_puts(lcd_buff); delay_ms(3000); */
//Cek Kecocokan Password for(i=0;i<10;i++){ if(plain[i]== pass[i]){ stat=1; }else{ stat=0; break; } } if (stat==1){ //Password Benar flag=1; }else{ //Salah Password lcd_clear(); lcd_puts("Wrong Password"); delay_ms(1000); } goto awal; }else{ //Salah Menu lcd_gotoxy(0,0);
lcd_puts("Tidak ada pilihan"); delay_ms(500);
} } }
B. Android
public class LockActivity extends Activity {
//SecureRandom randomGenerator = new SecureRandom(); BBSprng BBS = new BBSprng();
//BigInteger rand = BBS.generatorBBS(2); //keytxt.setText(rand.toString());
int bbs=0;
//Random randomGenerator = new Random(); for (int i = 1; i<=10; i++)
{
/*long seed = System.nanoTime();
long randomInt = (seed * seed *
randomGenerator.nextInt(10000)); if(randomInt<0){
randomInt = - randomInt; }*/
if(bbs < 0){ bbs = -bbs; }
int y = bbs % 26;
key= key + (char) (65 + y); } //plaintxt.setText(Integer.toString(bbs)); keytxt.setText(key); mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if(mBluetoothAdapter == null) {
Label.setText("No bluetooth adapter available"); }
if(!mBluetoothAdapter.isEnabled()) {
Intent enableBluetooth = new
Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enableBluetooth, 0); } } // On Start Activity @Override
public void onStart() {
super.onStart();
if(D) Log.e(TAG, "ON START"); //Open Connection
ButtonOpen.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) { try { SearchBT(); OpenBT(); sendData("lock"); }
catch (IOException ex) { } }
});
//Send plain and Key
ButtonLocked.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
try {
//Encriypt teks
String key = keytxt.getText().toString(); String plain = plaintxt.getText().toString(); if(plain.length()<=10)
{
DatabaseHandler db = new
db.addKey(cipher, key); sendData(key);
sendData(plain); }else{
Toast.makeText(getApplicationContext(), "Panjang PlainTeks Harus 10", Toast.LENGTH_LONG).show();
} }
catch (Exception ex) { } }
});
//Close Connection
ButtonClose.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
try {
closeBT(); }
catch (IOException ex) { } }
}); }
void SearchBT() {
if(D) Log.d(TAG, "Cari BT");
Set<BluetoothDevice> pairedDevices =
mBluetoothAdapter.getBondedDevices(); if(pairedDevices.size() > 0) {
for(BluetoothDevice device : pairedDevices) {
if(device.getName().equals("HC-05")) {
mmDevice = device;
Label.setText("Slave Client Found"); //break;
} else {
Label.setText("Slave Client Not Found"); }
// Register the BroadcastReceiver
/*IntentFilter filter = new
IntentFilter(BluetoothDevice.ACTION_FOUND);
registerReceiver(mReceiver, filter); // Don't forget to unregister during onDestroy*/
} } }
// Untuk memulai melakukan koneksi dengan client bluetooth void OpenBT() throws IOException
{
if(D) Log.d(TAG, "Buka BT");
UUID uuid =
SerialPortService ID mmSocket = mmDevice.createRfcommSocketToServiceRecord(uuid); mmSocket.connect(); mmOutputStream = mmSocket.getOutputStream(); mmInputStream = mmSocket.getInputStream(); ListenForData(); Label.setText("Bluetooth Opened");
//Toast.makeText(this, "Bluetooth Dibuka",
Toast.LENGTH_LONG).show(); }
// Background thread untuk menerima data dari client bluetooth void ListenForData()
{
if(D) Log.d(TAG, "Listen Data");
final byte delimiter = 13; //atau Carriage Return (CR), di gunakan untuk mendeteksi akhir dari text
stopWorker = false; readBufferPosition = 0; Buffer = new byte[1024];
Thread workerThread = new Thread(new Runnable() {
@Override
public void run() { while(!Thread.currentThread().isInterrupted() && !stopWorker) { //Do work try {
int bytesAvailable = mmInputStream.available(); if(bytesAvailable > 0)
{
byte[] packetBytes = new byte[bytesAvailable]; mmInputStream.read(packetBytes); for(int i=0;i<bytesAvailable;i++) { byte b = packetBytes[i]; if(b == delimiter) {
byte[] encodedBytes = new
byte[readBufferPosition];
System.arraycopy(Buffer, 0,
encodedBytes, 0, encodedBytes.length);
final String data = new
String(encodedBytes, "US-ASCII");
readBufferPosition = 0; Message m = new Message(); Bundle bund = new Bundle(); bund.putString("My Key", data); m.setData(bund); h.sendMessage(m); } else { Buffer[readBufferPosition++] = b; }
}
catch (IOException ex) { stopWorker = true; } } } }); workerThread.start(); }
// Untuk mengirim data ke client bluetooth void sendData(String m) throws IOException {
if(D) Log.d(TAG, "Kirim Data"); m += "\n\r";
mmOutputStream.write(m.getBytes()); Label.setText("Data Sent");
//Toast.makeText(this, “Data Terkirim“,
Toast.LENGTH_LONG).show(); }
//Untuk Ekripsi One Time Pad
void Enkripsi(String key, String plain) throws IOException { cipher=""; int temp=0; char c; //int sum; for(int i= 0; i<key.length();i++) {
temp = key.charAt(i) + plain.charAt(i); if(temp>126){ temp=(temp-126)+31; } c= (char) temp; cipher=cipher + c; //Toast.makeText(getApplicationContext(), cipher ,Toast.LENGTH_LONG).show(); } /*sum = 67 ^ 68; c= (char) sum; cipher=cipher+ c;*/ } }
public class UnlockActivity extends Activity { try{
DatabaseHandler db = new
DatabaseHandler(getApplicationContext());
String key = db.getDetails().get("key"); String plain = db.getDetails().get("plain"); String cipher="";
Enkripsi(key, plain);
cipher=Ciphertxt.getText().toString(); Dekripsi(key, cipher);
}
//Send Cipher
ButtonUnlocked.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
try {
DatabaseHandler db = new
DatabaseHandler(getApplicationContext());
String key = db.getDetails().get("key");
String cipher = db.getDetails().get("cipher"); if(cipher.length()>=10) { Ciphertxt.setText(cipher); //Dekripsi(key, cipher); //Send Cipher sendData(cipher); }else{ Toast.makeText(getApplicationContext(), "Panjang Cipherteks Harus 10", Toast.LENGTH_LONG).show();
} }
catch (IOException ex) { } }
}); }
// Mencari Client Bluetooth yg sudah paired dengan nama “nutscientist“ void SearchBT()
{
if(D) Log.d(TAG, "Cari BT");
Set<BluetoothDevice> pairedDevices =
mBluetoothAdapter.getBondedDevices(); if(pairedDevices.size() > 0) {
for(BluetoothDevice device : pairedDevices) {
if(device.getName().equals("HC-05")) {
mmDevice = device;
Label.setText("Slave Client Found"); //break;
} else {
Label.setText("Slave Client Not Found"); }
// Register the BroadcastReceiver
/*IntentFilter filter = new
IntentFilter(BluetoothDevice.ACTION_FOUND);
registerReceiver(mReceiver, filter); // Don't forget to unregister during onDestroy*/
} } }
{
if(D) Log.d(TAG, "Buka BT");
UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); //Standard SerialPortService ID mmSocket = mmDevice.createRfcommSocketToServiceRecord(uuid); mmSocket.connect(); mmOutputStream = mmSocket.getOutputStream(); mmInputStream = mmSocket.getInputStream(); ListenForData(); Label.setText("Bluetooth Opened");
//Toast.makeText(this, "Bluetooth Dibuka",
Toast.LENGTH_LONG).show(); }
// Background thread untuk menerima data dari client bluetooth void ListenForData()
{
if(D) Log.d(TAG, "Listen Data");
final byte delimiter = 13; //atau Carriage Return (CR), di gunakan untuk mendeteksi akhir dari text
stopWorker = false; readBufferPosition = 0; Buffer = new byte[1024];
Thread workerThread = new Thread(new Runnable() {
@Override
public void run() { while(!Thread.currentThread().isInterrupted() && !stopWorker) { //Do work try {
int bytesAvailable = mmInputStream.available(); if(bytesAvailable > 0)
{
byte[] packetBytes = new byte[bytesAvailable]; mmInputStream.read(packetBytes); for(int i=0;i<bytesAvailable;i++) { byte b = packetBytes[i]; if(b == delimiter) {
byte[] encodedBytes = new
byte[readBufferPosition];
System.arraycopy(Buffer, 0,
encodedBytes, 0, encodedBytes.length);
final String data = new
String(encodedBytes, "US-ASCII");
readBufferPosition = 0; Message m = new Message(); Bundle bund = new Bundle(); bund.putString("My Key", data); m.setData(bund); h.sendMessage(m); } else { Buffer[readBufferPosition++] = b;
} } } }
catch (IOException ex) { stopWorker = true; } } } }); workerThread.start(); }
// Untuk mengirim data ke client bluetooth void sendData(String m) throws IOException {
if(D) Log.d(TAG, "Kirim Data"); m += "\n\r";
mmOutputStream.write(m.getBytes()); Label.setText("Data Sent");
//Toast.makeText(this, “Data Terkirim“,
Toast.LENGTH_LONG).show(); }
//Untuk Ekripsi One Time Pad
//www.life0fpentester.blogspot.com/2014/03/one-time-pad-encryptio n-decryption.html
void Enkripsi(String key, String plain) throws IOException { String cipher=""; int temp=0; char c; //int sum; for(int i= 0; i<key.length();i++) {
temp = key.charAt(i) + plain.charAt(i); if(temp>126){ temp=(temp-126)+31; } c= (char) temp; cipher=cipher + c; //Toast.makeText(getApplicationContext(), cipher ,Toast.LENGTH_LONG).show(); } /*sum = 67 ^ 68; c= (char) sum; cipher=cipher+ c;*/ Ciphertxt.setText(cipher); }
void Dekripsi(String key, String cipher) throws IOException {
String plain=""; int temp=0; char c;
{
temp = cipher.charAt(i) - key.charAt(i); if(temp<126){ temp=(temp+126)-31; } c= (char) temp; plain=plain + c; //Toast.makeText(getApplicationContext(), cipher ,Toast.LENGTH_LONG).show(); } /*sum = 67 ^ 68; c= (char) sum; cipher=cipher+ c;*/ Label.setText(plain); } }