LAMPIRAN A (KODE PROGRAM) 1. link_sandi.php (Vigenere)
Universitas Sumatera Utara
71
$i=0; for($j=0; $j<$panjang_plantext; $j++) //pengulangan kunci sampai panjang plantext { if ($i == $panjang_kunci){ $i = 0;} $split_kunci2[$j] = $split_kunci[$i]; $i++; } for($k=0; $k<$panjang_plantext; $k++) //Proses enkripsi vigenere { $a = kar_ke_des($split_kunci2[$k]); //mengganti huruf pada kunci menjadi angka $b = kar_ke_des($split_plantext[$k]); //mengganti huruf pada plantext menjadi angka if (($a && $b)!= null){ $cipto[$k] = vigenere_dekripsi($b, $a);} else { $cipto[$k] = $split_plantext[$k];} } $nilai = array_values($cipto); //menyatukan array $nilai1 = implode($nilai); //konvert array ke string $pecahNilai = explode('&', $nilai1); for ($i=0; $i <= count($pecahNilai)-1; $i++){ $decode = explode('=', $pecahNilai[$i]); $var[$decode[0]] = $decode[1];} return $var; } /* dekripsi get dari url=================================================*/ function androidlinkdekrip($x){ $kunci = "1nd0n3s14"; $pecahURI = explode('?', $x); $plantext = $pecahURI[1]; $panjang_kunci = strlen($kunci); //panjang karakter kunci $panjang_plantext = strlen($plantext); //panjang karakter plantext $split_kunci = str_split($kunci); //memisahkan kunci perkarakter $split_plantext = str_split($plantext); //memisahkan plantext perkarakter $cipto = array(); $i=0; for($j=0; $j<$panjang_plantext; $j++) //pengulangan kunci sampai panjang plantext { if ($i == $panjang_kunci){ $i = 0;} $split_kunci2[$j] = $split_kunci[$i]; $i++; } for($k=0; $k<$panjang_plantext; $k++) //Proses enkripsi vigenere {
Universitas Sumatera Utara
72
$a = kar_ke_des($split_kunci2[$k]); //mengganti huruf pada kunci menjadi angka $b = kar_ke_des($split_plantext[$k]);//mengganti huruf pada plantext menjadi angka if (($a && $b)!= null){ $cipto[$k] = vigenere_dekripsi($b, $a);} else{ $cipto[$k] = $split_plantext[$k];} } $nilai = array_values($cipto); //menyatukan array $nilai1 = implode($nilai); //konvert array ke string $pecahNilai = explode('GcP', $nilai1); for ($i=0; $i <= count($pecahNilai)-1; $i++){ $decode = explode('=', $pecahNilai[$i]); $var[$decode[0]] = $decode[1];} return $var; } /*95 karakter Enkripsi===================================================*/ function enkripsi($x, $y){ $kunci = $y; $plantext = $x; $panjang_kunci = strlen($kunci); //panjang karakter kunci $panjang_plantext = strlen($plantext); //panjang karakter plantext $split_kunci = str_split($kunci); //memisahkan kunci perkarakter $split_plantext = str_split($plantext);//memisahkan plantext perkarakter $cipto = array(); $i=0; for($j=0; $j<$panjang_plantext; $j++)//pengulangan kunci sampai panjang plantext { if ($i == $panjang_kunci){ $i = 0;} $split_kunci2[$j] = $split_kunci[$i]; $i++; } for($k=0; $k<$panjang_plantext; $k++)//Proses enkripsi vigenere { $a = char_to_dec($split_kunci2[$k]);//mengganti huruf pada kunci menjadi angka $b = char_to_dec($split_plantext[$k]);//mengganti huruf pada plantext menjadi angka if (($a && $b)!= null){ $cipto[$k] = tabel_vigenere_encrypt($a, $b);} else{ echo $split_plantext[$k];//menampilkan plantext $cipto[$k] = $split_plantext[$k];} } $nilai = array_values($cipto); //menyatukan array $nilai1 = implode($nilai); //konvert array ke string return $nilai1;}?>
Universitas Sumatera Utara
73
2. vig95.php (Vigenere 95) =97 && $i<=122){ //ascii desimal huruf kecil return ($i-96);} // 1 s/d 26 else if ($i>=65 && $i<=90){ //ascii desimal huruf besar return ($i-38);} //27 s/d 52 else if ($i>=48 && $i<=57){ //ascii desimal angka return ($i+5);} //53 s/d 62 else if ($i>=32 && $i<=47){ //ascii desimal spasi s/d / return ($i+31);} // 63 s/d 78 else if ($i>=58 && $i<=64){ //ascii desimal : s/d @ return ($i+21);} // 79 s/d 85 else if ($i>=91 && $i<=96) { //ascii desimal [ s/d ' return ($i-5);} // 86 s/d 91 else if ($i>=123 && $i<=126){ //ascii desimal { s/d ~ return ($i-31);} // 92 s/d 95 else{ return null;} } function dec_to_char($a) //merubah desimal menjadi karakter sesuai ascii { if ($a>=1 && $a<=26){ //ascii desimal huruf kecil return (chr($a+96));} else if ($a>=27 && $a<=52){ //ascii desimal huruf besar return (chr($a+38));} else if ($a>=53 && $a<=62){ //ascii desimal angka return (chr($a-5));} else if ($a>=63 && $a<=78){ //ascii desimal spasi s/d / return (chr($a-31));} else if ($a>=79 && $a<=85){ //ascii desimal : s/d @ return (chr($a-21));} else if ($a>=86 && $a<=91){ //ascii desimal [ s/d ' return (chr($a+5));} else if ($a>=92 && $a<=95){ //ascii desimal { s/d ~ return (chr($a+31));} else{ return null;} } function tabel_vigenere_encrypt($a, $b) //rumus enkripsi { $i=$a+$b-1; if ($i>95){ $i=$i-95;} return (dec_to_char($i)); } function tabel_vigenere_decrypt($a, $b) //rumus deskripsi { $i=$a-$b+1; if ($i<1){ $i=$i+95;} return (dec_to_char($i)); } ?>
Universitas Sumatera Utara
74
3. admin_input_proses.php (QR Code Proses) /*95 karakter Enkripsi===================================================*/ $plantext = $No_Polisi.";".$Nama.";".$Alamat.";".$No_Rangka.";".$No_Mesin; $kunci = "1nd0n3s14"; $nilai1 = enkripsi($plantext, $kunci); $nilai2 = "GcP".$nilai1."PcG"; /*QR Code Proses=========================================================*/ echo "
Data QR Code
"; // lokasi tempat $PNG_TEMP_DIR=dirname(__FILE__).DIRECTORY_SEPARATOR.'temp'.DIRECTORY_SEPARA TOR; //tempat png qr code $PNG_WEB_DIR = 'temp/'; //cek tempat & membuat lokasi tempat if (!file_exists($PNG_TEMP_DIR)) mkdir($PNG_TEMP_DIR); //nama file gambar $PK = (strlen($nilai2) - 5) ; //panjang text di kurang 5 $sub1 = substr($nilai2, 0 ,5); // menampilkan 10 karakter saja $sub2 = substr($nilai2, $PK ); // menampilkan 5 huruf terakhir $subjoin = $sub1."".$sub2; // menggabungkan $anjar = $subjoin; //proses $errorCorrectionLevel = 'M'; $matrixPointSize = 8; $filename=$PNG_TEMP_DIR.'anjar'.md5($anjar.'|'.$errorCorrectionLevel.'|'.$m atrixPointSize).'.png'; if (isset($_REQUEST['data'])){ //cek data if (trim($_REQUEST['data']) == '') die('
Data Tidak boleh Kosong! Kembali
'); // user data $filename=$PNG_TEMP_DIR.'anjar'.md5($_REQUEST['data'].'|'.$errorCorre ctionLevel.'|'.$matrixPointSize).'.png'; QRcode::png($_REQUEST['data'], $filename, $errorCorrectionLevel, $matrixPointSize, 2); } else{ //default data QRcode::png($nilai2, $filename, $errorCorrectionLevel, $matrixPointSize, 2);} //menampilkan qr code echo "
".$data['No_Polisi']."
"; echo "
"; echo "Data sesuai dengan STNK
"; echo "
Cetak
";
Universitas Sumatera Utara
75
4. cek.php (Cek data) 0){ $response = array(); $response["cek"] = array(); $data = mysql_fetch_array($hasil); $h['NoPolisi'] = $data['No_Polisi']; $h['Nama'] = $data['nama']; $h['NoTelepon'] = $data['no_telepon']; $h['data1'] = $data['status_id']; array_push($response["cek"], $h); $response["sukses"] = "1"; $json = json_encode($response); echo enkripsi($json, $sandi2);} else{ $response = array(); $response["cek"] = array(); $h['data'] = "Tidak ada data"; array_push($response["cek"], $h); $response["sukses"] = "2"; $json = json_encode($response); echo enkripsi($json, $sandi2);} } else{ $response = array(); $response["cek"] = array(); $h['data'] = "Error 09"; array_push($response["cek"], $h); $response["sukses"] = "0"; $json = json_encode($response); echo enkripsi($json, $sandi2);}?>
5. MainActivity.java (Halaman utama aplikasi mobile dan Scan QR Code) package id.anjar.projectz1; import com.google.zxing.integration.android.IntentIntegrator; import com.google.zxing.integration.android.IntentResult; import id.anjar.projectz1.R; public class MainActivity extends Activity implements OnClickListener{ private Button scanBtn, cekBtn, exitBtn;
Universitas Sumatera Utara
76
cekInternet cekNet; Boolean NetTersedia = false; @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); scanBtn = (Button)findViewById(R.id.scan_button); cekBtn = (Button)findViewById(R.id.cek_button); exitBtn = (Button)findViewById(R.id.exit_button); TextView data= (TextView) findViewById(R.id.scan_format); String deviceVersion = Build.VERSION.RELEASE; data.setText("Android Ver."+deviceVersion); scanBtn.setOnClickListener(this); cekBtn.setOnClickListener(this); exitBtn.setOnClickListener(this);} /*FUNGSI DARI TOMBOL=====================================================*/ public void onClick(View v){ //scan button if(v.getId()==R.id.scan_button){ /*Cek Versi Perangkat*/ String deviceVersion = Build.VERSION.RELEASE; String device = deviceVersion.substring(0,1); int versi = Integer.parseInt(device); if(versi >= 4){ /*Memanggil library Zxing bawaan*/ Intent intent= new Intent("com.google.zxing.client.android.SCAN"); intent.putExtra("com.google.zxing.client.android. SCAN.SCAN_MODE", "QR_CODE_MODE"); startActivityForResult(intent, 0);} else{ /*Memanggil library Zxing tidak bawaan*/ //kelas instantiate ZXing integration IntentIntegrator scanIntegrator = new IntentIntegrator(this); //memulai memindai scanIntegrator.initiateScan();} } else if(v.getId()==R.id.cek_button){ /*Memanggil kelas cekactivity*/ Intent i = new Intent(getApplicationContext(),CekActivity.class); startActivity(i);} else if(v.getId()==R.id.exit_button){ AlertDialog.Builder ad = new AlertDialog.Builder(this); ad.setMessage("Apakah Anda ingin keluar?"); ad.setPositiveButton("Ya", new DialogInterface.OnClickListener(){
Universitas Sumatera Utara
77
public void onClick(DialogInterface dialog, int id){ // closeDialog.this.finish(); Intent i = new Intent(Intent.ACTION_MAIN); i.addCategory(Intent.CATEGORY_HOME); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(i); finish(); System.exit(0);} }); ad.setNegativeButton("Tidak", new DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialog, int id){ dialog.cancel();} }); ad.show();} } /*Hasil QR CODE SCANNER==================================================*/ public void onActivityResult(int requestCode, int resultCode, Intent intent){ String deviceVersion1 = Build.VERSION.RELEASE; String device1 = deviceVersion1.substring(0,1); int versi1 = Integer.parseInt(device1); if(versi1 >= 4){ if (requestCode == 0){ if (resultCode == RESULT_OK){ String scanContent = intent.getStringExtra("SCAN_RESULT"); String scanFormat = intent.getStringExtra("SCAN_RESULT_FORMAT"); // Scan Berhasil if (scanFormat != null){ //objek parse dengan bundle fungsi Bundle parse = new Bundle(); //memasukkan data ke variabel parse parse.putString("parse_scanFormat",scanFormat); parse.putString("parse_scanContent",scanContent); //pindah layout Intent i = new Intent(MainActivity.this,HasilScanActivity.class); i.putExtras(parse); startActivity(i);} else{ //data scan tidak cocok atau scan di batalkan Toast toast = Toast.makeText(getApplicationContext(), "Tidak ada data yang di terima!", Toast.LENGTH_SHORT); toast.show();} } else if (resultCode == RESULT_CANCELED){ //data scan tidak cocok atau scan di batalkan
Universitas Sumatera Utara
78
Toast toast = Toast.makeText(getApplicationContext(), "Tidak ada data yang di terima!", Toast.LENGTH_SHORT); toast.show();} } } else{ //mengambil hasil pemindaian - instantiate ZXing object IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent); //cek data valid if (scanningResult != null){ //mendapatkan konten dari Hasil Intent String scanContent = scanningResult.getContents(); //mendapatkan nama format data yang dipindai String scanFormat = scanningResult.getFormatName(); if (scanFormat != null){ //objek parse dengan bundle fungsi Bundle parse = new Bundle(); //memasukkan data ke variabel parse parse.putString("parse_scanFormat",scanFormat); parse.putString("parse_scanContent",scanContent); //pindah layout Intent i =new Intent(MainActivity.this,HasilScanActivity.class); i.putExtras(parse); startActivity(i);} else{ //data scan tidak cocok atau scan di batalkan Toast toast = Toast.makeText(getApplicationContext(), "Tidak ada data yang di terima!", Toast.LENGTH_SHORT); toast.show();} } else{ //data scan tidak cocok atau scan di batalkan Toast toast = Toast.makeText(getApplicationContext(), "Tidak ada data yang di terima!", Toast.LENGTH_SHORT); toast.show();} }}}
6. HasilScanActivity.java package id.anjar.projectz1; public class HasilScanActivity extends Activity{ String url, url1, sukses; public String Sandi63 = "1nd0n3s14"; public String Sandi95_1 = "1nd0n3s14"; public String Sandi95_2 = "NuS4nT4ra"; cekInternet cekNet, cekServer; Boolean NetTersedia, ServerTersedia;
Universitas Sumatera Utara
79
int PNoPol; @SuppressWarnings("deprecation") public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.hasilscan); TextView data1= (TextView) findViewById(R.id.textView2); /*Parsing data dari halaman sebelumnya*/ Bundle parse2 = new Bundle(); parse2 = getIntent().getExtras(); String kalimat = parse2.getString("parse_scanContent"); String awal = "GcP"; String akhir = "PcG"; int PK = kalimat.length(); int kurang = PK - 3; /*Cek data qr code*/ if(PK != 0){ /*validasi*/ String kalimat1 = kalimat.substring(3,kurang); String kalimat2 = kalimat.substring(0,3); String kalimat3 = kalimat.substring(kurang); if(((kalimat2.equals(awal))== true) && ((kalimat3.equals(akhir))== true)){ /*dekripsi*/ String hasil = Vigenere.dekripsi(Sandi95_1, kalimat1); String s = ""; String[] hasilsplit = hasil.split(";"); String No_Polisi = hasilsplit[0]; PNoPol = No_Polisi.length(); for (int i=0; i
No Polisi
" +(hasilsplit[i])+"< i>
";} else if(i == 1){ s += "Nama
"+(hasilsplit[i])+"
";} else if(i == 2){ s += "Alamat
"+(hasilsplit[i])+"
";} else if(i == 3){ s += "No. Rangka
"+(hasilsplit[i])+"
";} else if(i == 4){ s += "No. Mesin
"+(hasilsplit[i])+"
";} else s += (hasilsplit[i])+"
"; } data1.setText(Html.fromHtml(s)); cekNet = new cekInternet(getApplicationContext()); NetTersedia = cekNet.isConnectingToInternet(); String link = "op=cekDataGcPNoPolisi="+No_Polisi.toString(); String linkenkrip = Vigenere.enkripsi63(Sandi63, link);
Universitas Sumatera Utara
80
// cek status Internet if (NetTersedia){ if (PNoPol > 9){ AlertDialog alertDialog = new AlertDialog.Builder(HasilScanActivity.this).create(); alertDialog.setTitle("Peringatan!"); alertDialog.setMessage("Sandi Tidak Cocok !"); alertDialog.setIcon(R.drawable.ic_action_about); alertDialog.setButton("OK", new DialogInterface.OnClickListener(){ public void onClick(final DialogInterface dialog, final int which){ Toast.makeText(getApplicationContext(), "Sandi Tidak Cocok", Toast.LENGTH_SHORT).show(); finish();} }); alertDialog.show(); } else{ url = "http://192.168.72.1/projectZ/android/cek.php?"+linkenkrip; new AmbilData().execute();} } return; } /*MENGAMBIL DATA DARI SERVER ============================================*/ public class AmbilData extends AsyncTask<String, String, String>{ ArrayList > contactList = new ArrayList >(); ProgressDialog pDialog; private String data, NoPolisi, Nama, NoTelepon, data1, hasilJsonDekripsi; //Menghentikan Proses dengan waktu final CountDownTimer timer = new CountDownTimer(30000, 1000){ public void onTick(long millisUntilFinished){ pDialog.setMessage("Memuat Data ...\nMenghitung Waktu Mundur: " + millisUntilFinished / 1000);} public void onFinish(){ pDialog.dismiss(); Toast.makeText(getApplicationContext(), "Server Tidak Ditemukan", Toast.LENGTH_SHORT).show();} }; @Override protected void onPreExecute(){ // TODO Auto-generated method stub super.onPreExecute(); pDialog = new ProgressDialog(HasilScanActivity.this); pDialog.setIndeterminate(false); pDialog.setCancelable(true); pDialog.show(); timer.start();} @Override protected String doInBackground(String... arg0){ /*Proses ambil data*/
Universitas Sumatera Utara
81
InputStream isi = ambil_data_web(); String isi_web = dataweb_ke_string(isi); hasilJsonDekripsi = Vigenere.dekripsi(Sandi95_2, isi_web); try{ /*Mengganti ke Json objek*/ JSONObject json = new JSONObject(hasilJsonDekripsi); sukses = json.getString("sukses"); Log.e("error", "nilai sukses=" + sukses); JSONArray hasil = json.getJSONArray("cek"); if (sukses.equals("0")){ for (int i = 0; i < hasil.length(); i++){ JSONObject c = hasil.getJSONObject(i); data = c.getString("data").trim(); Log.e("ok", " ambil data 0");} } else if (sukses.equals("1")){ for (int i = 0; i < hasil.length(); i++){ JSONObject c = hasil.getJSONObject(i); NoPolisi=c.getString("NoPolisi").trim(); Nama = c.getString("Nama").trim(); NoTelepon=c.getString("NoTelepon").trim(); data1 = c.getString("data1").trim(); Log.e("ok", " ambil data 1");} } else{ for (int i = 0; i < hasil.length(); i++){ JSONObject c = hasil.getJSONObject(i); data = c.getString("data").trim(); Log.e("ok", " ambil data 2");} } } catch (Exception e){ Log.e("error", "tidak bisa ambil data"); AmbilData.this.cancel(true);} return null; } @Override protected void onPostExecute(String result) { TextView data2= (TextView) findViewById(R.id.textView3); TextView data3= (TextView) findViewById(R.id.textView4); TextView data5= (TextView) findViewById(R.id.textView6); TextView data6= (TextView) findViewById(R.id.textView7); LinearLayout background = (LinearLayout)findViewById(R.id.hasilScan); LinearLayout footer = (LinearLayout)findViewById(R.id.footer); super.onPostExecute(result); pDialog.dismiss(); timer.cancel(); if(sukses.equals("1")){ if(Integer.parseInt(data1) == 1){ data2.setText(Html.fromHtml("HILANG"));
Universitas Sumatera Utara
82
data3.setText(Html.fromHtml("Pelapor
"+Nama+"
"+NoTelepon+"")); data5.setVisibility(View.GONE); data6.setVisibility(View.GONE); background.setBackgroundColor(Color.RED); footer.setVisibility(View.VISIBLE);} else{ data2.setVisibility(View.GONE); data3.setVisibility(View.GONE); data5.setVisibility(View.GONE); data6.setVisibility(View.GONE); Toast.makeText(getApplicationContext(), "Status Aman", Toast.LENGTH_SHORT).show();} } else{ data2.setText(Html.fromHtml("Kendaraan Tidak Memiliki Catatan Kehilangan")); data5.setVisibility(View.GONE); data6.setVisibility(View.GONE); Toast.makeText(getApplicationContext(), "Kendaraan Tidak Memiliki Catatan Kehilangan", Toast.LENGTH_SHORT) .show();} } /*FUNGSI MENGAMBIL DATA DENGAN INPUTSTREAM===============================*/ private InputStream ambil_data_web(){ InputStream content = null; HttpClient klien = new DefaultHttpClient(); HttpGet req = new HttpGet(url); try{ HttpResponse respon = klien.execute(req); content = respon.getEntity().getContent();} catch (Exception e){ e.printStackTrace();} return content; } /*FUNGSI MERUBAH INPUTSTREAM KE STRING===================================*/ private String dataweb_ke_string(InputStream isi){ BufferedReader rd = new BufferedReader(new InputStreamReader(isi),4096); String baris; StringBuilder sb = new StringBuilder(); try{ while((baris = rd.readLine())!= null){ sb.append(baris);} rd.close();} catch (Exception e){ e.printStackTrace();} String isi_web = sb.toString(); return isi_web; } }}
6. Vigenere.java /*Dekripsi Vigenere 96 karakter==========================================*/ public static String dekripsi(String key, String plaintext){
Universitas Sumatera Utara
83
String result=""; int offset, offset1, shift, shift1 = 0; int j=0; for(int i=0;i= 32 && offset <= 47){ offset1 = offset + 31;} //ascii angka (53 s/d 62) else if(offset >= 48 && offset <= 57){ offset1 = offset + 5;} //ascii : sampai dengan @ (79 s/d 85) else if(offset >= 58 && offset <= 64){ offset1 = offset + 21;} //ascii huruf besar (27 s/d 52) else if(offset >= 65 && offset <= 90){ offset1 = offset - 38;} //ascii [ sampai dengan ' (86 s/d 91) else if(offset >= 91 && offset <= 96){ offset1 = offset - 5;} //ascii huruf kecil (1 s/d 26) else if(offset >= 97 && offset <= 122){ offset1 = offset - 96;} //ascii { sampai dengan ~ (92 s/d 95) else if(offset >= 123 && offset <= 126){ offset1 = offset - 31;} else{ offset1 = offset * 0;} //SHIFT //ascii spasi sampai dengan / (63 s/d 78) if(shift >= 32 && shift <= 47){ shift1 = shift + 31;} //ascii angka (53 s/d 62) else if(shift >= 48 && shift <= 57){ shift1 = shift + 5;} //ascii : sampai dengan @ (79 s/d 85) else if(shift >= 58 && shift <= 64){ shift1 = shift + 21;} //ascii huruf besar (27 s/d 52) else if(shift >= 65 && shift <= 90){ shift1 = shift - 38;} //ascii [ sampai dengan ' (86 s/d 91) else if(shift >= 91 && shift <= 96){ shift1 = shift - 5;} //ascii huruf kecil (1 s/d 26) else if(shift >= 97 && shift <= 122){ shift1 = shift - 96;} //ascii { sampai dengan ~ (92 s/d 95) else if(shift >= 123 && shift <= 126){ shift1 = shift - 31;}
Universitas Sumatera Utara
84
else{ shift1 = shift * 0;} if((offset1 >= 0) && (shift1 >= 0)){ //rumus vigenere dekripsi int offset2 = ((offset1 - shift1) + 1); if (offset2 < 1){ offset2 = (offset2 + 95);} //merubah desimal ke karakter //huruf kecil if((offset2 >= 1 && offset2 <= 26)){ result+=(char)(offset2 + 96);} //huruf besar else if((offset2 >= 27 && offset2 <= 52)){ result+=(char)(offset2 + 38);} //angka else if((offset2 >= 53 && offset2 <= 62)){ result+=(char)(offset2 - 5);} //spasi s/d / else if((offset2 >= 63 && offset2 <= 78)){ result+=(char)(offset2 - 31);} //: s/d @ else if((offset2 >= 79 && offset2 <= 85)){ result+=(char)(offset2 - 21);} //[ sampai dengan ' else if((offset2 >= 86 && offset2 <= 91)){ result+=(char)(offset2 + 5);} //{ sampai dengan ~ else if((offset2 >= 92 && offset2 <= 95)){ result+=(char)(offset2 + 31);} else{ return result;} } else{ result=result+plaintext.charAt(i); } } return result; }
Universitas Sumatera Utara