A-1 LISTING PROGRAM 1. MainActivity.java package com.example.ilmukomputer.mycipher; import android.content.intent; import android.graphics.color; import android.os.bundle; import android.support.v7.app.appcompatactivity; import android.text.inputtype; import android.view.view; import android.widget.checkbox; import android.widget.compoundbutton; import android.widget.edittext; import android.widget.imagebutton; import android.widget.tabhost; import android.widget.textview; import android.widget.toast; public class MainActivity extends AppCompatActivity protected void oncreate(bundle savedinstancestate) settheme(r.style.apptheme); super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); TabHost tab = (TabHost) findviewbyid(r.id.tabhost); tab.setup(); TabHost.TabSpec spec1 = tab.newtabspec("pengamanan"); spec1.setindicator("pengamanan"); spec1.setcontent(r.id.layout1); tab.addtab(spec1); TabHost.TabSpec spec2 = tab.newtabspec("pengungkapan"); spec2.setindicator("pengungkapan"); spec2.setcontent(r.id.layout2); tab.addtab(spec2); for(int i=0;i<tab.gettabwidget().getchildcount();i++) TextView tv = (TextView) tab.gettabwidget().getchildat(i).findviewbyid(android.r.id.title); tv.settextcolor(color.parsecolor("#ffffff")); tv.settextsize(15); buttonclick(); pengamanan(); pengungkapan(); private boolean checkinput(string pesan, String key1, String key2) int i, j; if(pesan.length() > 0 && key1.length() >= 2 && key2.length() >= 2) if(pesan.length() >= key1.length() && pesan.length() >= key2.length()) for(i=0; i<pesan.length(); i++) j = (int) pesan.charat(i); if (j < 32 j > 126) for(i=0; i<key1.length(); i++) j = (int) key1.charat(i); if(j < 32 j > 126)
A-2 for(i=0; i<key2.length(); i++) j = (int) key2.charat(i); if(j < 48 j > 57) else else return true; private void pengamanan() final EditText et_plaintext_en = (EditText) findviewbyid(r.id.et_plaintext_en); final EditText et_key1_en = (EditText) findviewbyid(r.id.et_key1_en); final EditText et_key2_en = (EditText) findviewbyid(r.id.et_key2_en); final TextView tv_ciphertext_en = (TextView) findviewbyid(r.id.tv_ciphertext_en); ImageButton b_encrypt = (ImageButton) findviewbyid(r.id.b_encrypt); b_encrypt.setonclicklistener(new View.OnClickListener() String plaintext = et_plaintext_en.gettext().tostring(); String key1 = et_key1_en.gettext().tostring(); String key2 = et_key2_en.gettext().tostring(); if (checkinput(plaintext, key1, key2)) String key = "", ciphertext1 = "", ciphertext2 = ""; int i, j, k, pesan, kecil = 0, tmp = 0; //enkripsi vigenere for (i = 0; i < plaintext.length(); i++) j = i % key1.length(); key += key1.charat(j); for (i = 0; i < plaintext.length(); i++) j = (int) plaintext.charat(i); k = (int) key.charat(i); pesan = ((j - 32) + (k - 32)) % 95; pesan += 32; ciphertext1 += (char) pesan; //ciphertext2 = ciphertext1; //ciphertext1 = plaintext; //enkripsi myszkowski int kol = key2.length(), bar = (int) Math.ceil((double) ciphertext1.length() / kol); char[][] matrix = new char[bar][kol]; for (i = 0; i < bar; i++) for (j = 0; j < kol; j++) if (tmp < ciphertext1.length()) matrix[i][j] = ciphertext1.charat(tmp); tmp++; else matrix[i][j] = Character.MIN_VALUE; tmp = -1; while (ciphertext2.length() < ciphertext1.length()) for (i = 0; i < kol; i++) if (Integer.parseInt(key2.charAt(i) + "") > tmp) kecil = Integer.parseInt(key2.charAt(i) + "");
A-3 break; for (i = 0; i < kol; i++) if (Integer.parseInt(key2.charAt(i) + "") > tmp && Integer.parseInt(key2.charAt(i) + "") < kecil) kecil = Integer.parseInt(key2.charAt(i) + ""); for (i = 0; i < bar; i++) for (j = 0; j < kol; j++) if (Integer.parseInt(key2.charAt(j) + "") == kecil && matrix[i][j]!= Character.MIN_VALUE) ciphertext2 += matrix[i][j]; tmp = kecil; tv_ciphertext_en.settext(ciphertext2); Toast.makeText(MainActivity.this, "Pengamanan Sukses", Toast.LENGTH_LONG).show(); else tv_ciphertext_en.settext(""); Toast.makeText(MainActivity.this, "Periksa Kembali Inputan Anda", Toast.LENGTH_LONG).show(); ); private void pengungkapan() final EditText et_ciphertext_de = (EditText) findviewbyid(r.id.et_ciphertext_de); final EditText et_key1_de = (EditText) findviewbyid(r.id.et_key1_de); final EditText et_key2_de = (EditText) findviewbyid(r.id.et_key2_de); final TextView tv_plaintext_de = (TextView) findviewbyid(r.id.tv_plaintext_de); ImageButton b_decrypt = (ImageButton) findviewbyid(r.id.b_decrypt); b_decrypt.setonclicklistener(new View.OnClickListener() public void onclick(view v) String ciphertext2 = et_ciphertext_de.gettext().tostring(); String key1 = et_key1_de.gettext().tostring(); String key2 = et_key2_de.gettext().tostring(); if (checkinput(ciphertext2, key1, key2)) String key="", ciphertext1="", plaintext=""; int i, j, k=0, pesan, kecil=0, tmp=-1; //dekripsi myszkowski int kol = key2.length(), bar = (int) Math.ceil((double) ciphertext2.length()/kol); char[][] matrix = new char[bar][kol]; while(k < ciphertext2.length()) for(i=0; i<kol; i++) if(integer.parseint(key2.charat(i) + "") > tmp) kecil = Integer.parseInt(key2.charAt(i) + ""); break; for(i=0; i<kol; i++) if(integer.parseint(key2.charat(i) + "") > tmp && Integer.parseInt(key2.charAt(i) + "") < kecil) kecil = Integer.parseInt(key2.charAt(i) + ""); for(i=0; i<bar; i++) for(j=0; j<kol; j++)
A-4 ciphertext2.length())) if(integer.parseint(key2.charat(j)+"") == kecil) if(i == bar-1 && j >= kol-((bar*kol)- else matrix[i][j] = ciphertext2.charat(k); k++; tmp = kecil; for(i=0; i<bar; i++) for(j=0; j<kol; j++) if(ciphertext1.length() < ciphertext2.length()) ciphertext1 += matrix[i][j]; //plaintext = ciphertext1; //ciphertext1 = ciphertext2; //dekripsi vigenere for(i=0; i<ciphertext1.length(); i++) j = i % key1.length(); key += key1.charat(j); for(i=0; i<ciphertext1.length(); i++) j = (int) ciphertext1.charat(i); k = (int) key.charat(i); if(j >= k) pesan = ((j - 32) - (k - 32)) % 95; else pesan = ((j - 32) + 95 - (k - 32)) % 95; pesan += 32; plaintext += (char) pesan; tv_plaintext_de.settext(plaintext); Toast.makeText(MainActivity.this, "Pengungkapan Sukses", Toast.LENGTH_LONG).show(); else tv_plaintext_de.settext(""); Toast.makeText(MainActivity.this, "Periksa Kembali Inputan Anda", Toast.LENGTH_LONG).show(); ); private void buttonclick() final EditText et_plaintext_en = (EditText) findviewbyid(r.id.et_plaintext_en); final EditText et_key1_en = (EditText) findviewbyid(r.id.et_key1_en); final EditText et_key2_en = (EditText) findviewbyid(r.id.et_key2_en); final TextView tv_ciphertext_en = (TextView) findviewbyid(r.id.tv_ciphertext_en); final EditText et_ciphertext_de = (EditText) findviewbyid(r.id.et_ciphertext_de); final EditText et_key1_de = (EditText) findviewbyid(r.id.et_key1_de); final EditText et_key2_de = (EditText) findviewbyid(r.id.et_key2_de); final TextView tv_plaintext_de = (TextView) findviewbyid(r.id.tv_plaintext_de); final ImageButton b_clear_en = (ImageButton) findviewbyid(r.id.b_clear_en); b_clear_en.setonclicklistener(new View.OnClickListener()
A-5 et_plaintext_en.settext(""); et_key1_en.settext(""); et_key2_en.settext(""); tv_ciphertext_en.settext(""); Toast.makeText(MainActivity.this, "Kolom Inputan Telah Direset", ); final ImageButton b_clear_de = (ImageButton) findviewbyid(r.id.b_clear_de); b_clear_de.setonclicklistener(new View.OnClickListener() et_ciphertext_de.settext(""); et_key1_de.settext(""); et_key2_de.settext(""); tv_plaintext_de.settext(""); Toast.makeText(MainActivity.this, "Kolom Inputan Telah Direset", ); CheckBox cb_view1_en = (CheckBox) findviewbyid(r.id.cb_view1_en); cb_view1_en.setoncheckedchangelistener(new CompoundButton.OnCheckedChangeListener() public void oncheckedchanged(compoundbutton buttonview, boolean ischecked) if (ischecked) et_key1_en.setinputtype(inputtype.type_text_variation_password); else et_key1_en.setinputtype(inputtype.type_class_text InputType.TYPE_TEXT_VARIATION_PASSWORD); ); CheckBox cb_view1_de = (CheckBox) findviewbyid(r.id.cb_view1_de); cb_view1_de.setoncheckedchangelistener(new CompoundButton.OnCheckedChangeListener() public void oncheckedchanged(compoundbutton buttonview, boolean ischecked) if (ischecked) et_key1_de.setinputtype(inputtype.type_text_variation_password); else et_key1_de.setinputtype(inputtype.type_class_text InputType.TYPE_TEXT_VARIATION_PASSWORD); ); CheckBox cb_view2_en = (CheckBox) findviewbyid(r.id.cb_view2_en); cb_view2_en.setoncheckedchangelistener(new CompoundButton.OnCheckedChangeListener() public void oncheckedchanged(compoundbutton buttonview, boolean ischecked) if (ischecked) et_key2_en.setinputtype(inputtype.type_class_number); else et_key2_en.setinputtype(inputtype.type_class_number InputType.TYPE_NUMBER_VARIATION_PASSWORD);
A-6 ); CheckBox cb_view2_de = (CheckBox) findviewbyid(r.id.cb_view2_de); cb_view2_de.setoncheckedchangelistener(new CompoundButton.OnCheckedChangeListener() public void oncheckedchanged(compoundbutton buttonview, boolean ischecked) if (ischecked) et_key2_de.setinputtype(inputtype.type_class_number); else et_key2_de.setinputtype(inputtype.type_class_number InputType.TYPE_NUMBER_VARIATION_PASSWORD); ); final ImageButton b_help_en = (ImageButton) findviewbyid(r.id.b_help_en); b_help_en.setonclicklistener(new View.OnClickListener() public void onclick(view v) Intent i = new Intent(MainActivity.this, HelpActivity.class); startactivity(i); ); final ImageButton b_help_de = (ImageButton) findviewbyid(r.id.b_help_de); b_help_de.setonclicklistener(new View.OnClickListener() public void onclick(view v) Intent i = new Intent(MainActivity.this, HelpActivity.class); startactivity(i); ); final ImageButton b_about_en = (ImageButton) findviewbyid(r.id.b_about_en); b_about_en.setonclicklistener(new View.OnClickListener() public void onclick(view v) Intent i = new Intent(MainActivity.this, AboutActivity.class); startactivity(i); ); final ImageButton b_about_de = (ImageButton) findviewbyid(r.id.b_about_de); b_about_de.setonclicklistener(new View.OnClickListener() public void onclick(view v) Intent i = new Intent(MainActivity.this, AboutActivity.class); startactivity(i); ); 2. HelpActivity.java package com.example.ilmukomputer.mycipher; import android.content.intent; import android.os.bundle; import android.support.v7.app.appcompatactivity; import android.text.inputtype; import android.view.motionevent; import android.view.view; import android.widget.button; import android.widget.checkbox; import android.widget.edittext; import android.widget.imagebutton; import android.widget.textview; import android.widget.toast; /** * Created by ILMUKOMPUTER on 8/6/2016.
A-7 */ public class HelpActivity extends AppCompatActivity protected void oncreate(bundle savedinstancestate) super.oncreate(savedinstancestate); setcontentview(r.layout.activity_help); ImageButton b_back = (ImageButton) findviewbyid(r.id.b_back); Button b_penggunaan = (Button) findviewbyid(r.id.b_penggunaan); Button b_algoritma = (Button) findviewbyid(r.id.b_algoritma); final TextView tv_bantuan = (TextView) findviewbyid(r.id.tv_bantuan); b_back.setonclicklistener(new View.OnClickListener() Intent i = new Intent(HelpActivity.this, MainActivity.class); i.setflags(intent.flag_activity_clear_top); startactivity(i); ); b_penggunaan.setonclicklistener(new View.OnClickListener() tv_bantuan.settext("terdiri dari proses Pengamanan dan Pengungkapan. Pada Pengamanan, tulis pesan asli yang " + "ingin disandi pada Kolom Pesan, kunci pertama pada Kolom Kunci 1 dan kunci kedua pada Kolom Kunci 2, kemudian klik " + "Button Proses untuk memulai Pengamanan. Hasil Pengamanan berupa pesan tersandi yang tidak dapat dibaca.\npada " + "Pengungkapan, tulis pesan tersandi hasil dari proses Pengamanan pada Kolom Pesan, kunci pertama pada Kolom Kunci 1 dan " + "kunci kedua pada Kolom Kunci 2, kemudian klik Button Proses untuk memulai Pengungkapan. Hasil Pengungkapan berupa pesan " + "asli yang dapat dibaca."); ); b_algoritma.setonclicklistener(new View.OnClickListener() tv_bantuan.settext("menggunakan dua buah algoritma Kriptografi yaitu algoritma Vigenere Cipher dan Myszkowski Transposition. " + "Pada proses Pengamanan, pesan asli dienkripsi menggunakan algoritma Vigenere Cipher, kemudian hasilnya dienkripsi " + "lagi menggunakan algoritma Myszkowski Transposition menjadi pesan tersandi. Sedangkan pada proses Pengungkapan, " + "pesan tersandi didekripsi menggunakan algoritma Myszkowski transposition, kemudian hasilnya didekripsi lagi menggunakan " + "algoritma Vigenere Cipher menjadi pesan asli."); ); ImageButton encrypt = (ImageButton) findviewbyid(r.id.b_encrypt); encrypt.setonclicklistener(new View.OnClickListener() tv_bantuan.settext("button yang digunakan untuk memulai proses Pengamanan atau Pengungkapan. Pada proses Pengungkapan, button " + "bergambar gembok terbuka. Apabila proses berhasil maka akan ditampilkan pemberitahuan Pengamanan atau Pengungkapan " + "Sukses. Apabila inputan tidak sesuai maka akan ditampilkan pemberitahuan Periksa Kembali Inputan Anda."); Toast.makeText(HelpActivity.this, "Button Proses", ); ImageButton clear = (ImageButton) findviewbyid(r.id.b_clear_en); clear.setonclicklistener(new View.OnClickListener() tv_bantuan.settext("button untuk mereset seluruh kolom inputan, yaitu Kolom Pesan, Kolom Kunci 1, Kolom Kunci 2 dan Kolom Hasil " + "menjadi kosong. Apabila sudah terhapus maka anda bisa kembali mengisi kolom-kolom tersebut."); Toast.makeText(HelpActivity.this, "Button Reset",
A-8 ); ImageButton help = (ImageButton) findviewbyid(r.id.b_help_en); help.setonclicklistener(new View.OnClickListener() tv_bantuan.settext("button untuk menampilkan Halaman Bantuan penggunaan (halaman ini). Bantuan yang disediakan yaitu penjelasan " + "mengenai Penggunaan aplikasi dan apa saja yang ada pada Halaman Pengamanan atau Pengungkapan. Selain itu, Halaman Bantuan " + "juga berisi penjelasan Algoritma yang digunakan untuk memproses pesan. Gunakan button bergambar panah di kiri atas untuk " + "kembali ke Halaman Pengamanan."); Toast.makeText(HelpActivity.this, "Button Bantuan", ); ImageButton about = (ImageButton) findviewbyid(r.id.b_about_en); about.setonclicklistener(new View.OnClickListener() tv_bantuan.settext("button untuk menampilkan Halaman Tentang. Halaman ini berisi informasi mengenai pembuat aplikasi. Gunakan button " + "bergambar panah di kiri atas untuk kembali ke Halaman Pengamanan."); Toast.makeText(HelpActivity.this, "Button Tentang", ); EditText pesan = (EditText) findviewbyid(r.id.et_plaintext_en); pesan.setinputtype(inputtype.type_null); pesan.setontouchlistener(new View.OnTouchListener() public boolean ontouch(view v, MotionEvent event) tv_bantuan.settext("kolom untuk menulis pesan yang ingin diproses. Pesan terdiri dari karakter ASCII 32 hingga 126. Apabila muncul " + "pemberitahuan Periksa Kembali Input Anda, maka mungkin saja salah satu karakter pesan yang digunakan tidak sesuai. " + "Pesan dapat di-copy ke clipboard dan di-paste dengan menahan klik pada teks. Gunakan button yang muncul pada kanan " + "atas setelah teks di-select"); Toast.makeText(HelpActivity.this, "Kolom Pesan", ); EditText key1 = (EditText) findviewbyid(r.id.et_key1_en); key1.setinputtype(inputtype.type_null); key1.setontouchlistener(new View.OnTouchListener() public boolean ontouch(view v, MotionEvent event) tv_bantuan.settext("kolom untuk menulis kunci pertama. Kunci terdiri dari karakter ASCII 32 hingga 126. Minimal panjang kunci " + "yang digunakan adalah 2 karakter dan maksimal sepanjang pesan. Apabila muncul pemberitahuan Periksa Kembali Input " + "Anda, maka mungkin saja kunci yang digunakan tidak sesuai."); Toast.makeText(HelpActivity.this, "Kolom Kunci 1", ); EditText key2 = (EditText) findviewbyid(r.id.et_key2_en); key2.setinputtype(inputtype.type_null); key2.setontouchlistener(new View.OnTouchListener() public boolean ontouch(view v, MotionEvent event) tv_bantuan.settext("kolom untuk menulis kunci kedua. Kunci terdiri dari angka 0 hingga 9. Minimal panjang kunci yang " + "digunakan adalah 2 karakter dan maksimal sepanjang pesan.
A-9 Apabila muncul pemberitahuan Periksa Kembali Inputan " + "Anda, maka mungkin saja kunci yang digunakan tidak sesuai."); Toast.makeText(HelpActivity.this, "Kolom Kunci 2", ); TextView hasil = (TextView) findviewbyid(r.id.tv_ciphertext_en); hasil.setontouchlistener(new View.OnTouchListener() public boolean ontouch(view v, MotionEvent event) tv_bantuan.settext("kolom untuk menampilkan pesan hasil proses Pengmanan atau Pengungkapan. Pesan dapat di-copy ke clipboard " + "dengan menahan klik pada teks. Gunakan button yang muncul di kanan atas setelah teks di-select."); Toast.makeText(HelpActivity.this, "Kolom Hasil Proses", ); final CheckBox view1 = (CheckBox) findviewbyid(r.id.cb_view1_en); view1.setonclicklistener(new View.OnClickListener() if(view1.ischecked()) tv_bantuan.settext("bila kotak diceklis maka akan memperlihatkan kunci pertama"); Toast.makeText(HelpActivity.this, "Kotak Lihat Kunci 1", else tv_bantuan.settext("bila kotak tidak diceklis maka akan menyembunyikan kunci pertama"); Toast.makeText(HelpActivity.this, "Kotak Lihat Kunci 1", ); final CheckBox view2 = (CheckBox) findviewbyid(r.id.cb_view2_en); view2.setonclicklistener(new View.OnClickListener() if(view2.ischecked()) tv_bantuan.settext("bila kotak diceklis maka akan memperlihatkan kunci kedua"); Toast.makeText(HelpActivity.this, "Kotak Lihat Kunci 2", else tv_bantuan.settext("bila kotak tidak diceklis maka akan menyembunyikan kunci kedua"); Toast.makeText(HelpActivity.this, "Kotak Lihat Kunci 2", ); 3. AboutActivity.java package com.example.ilmukomputer.mycipher; import android.content.intent; import android.os.bundle; import android.support.v7.app.appcompatactivity; import android.view.view; import android.widget.imagebutton;
A-10 /** * Created by ILMUKOMPUTER on 8/6/2016. */ public class AboutActivity extends AppCompatActivity protected void oncreate(bundle savedinstancestate) super.oncreate(savedinstancestate); setcontentview(r.layout.activity_about); ImageButton b_back = (ImageButton) findviewbyid(r.id.b_back); b_back.setonclicklistener(new View.OnClickListener() Intent i = new Intent(AboutActivity.this, MainActivity.class); i.setflags(intent.flag_activity_clear_top); startactivity(i); ); 4. activity_main.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_height="match_parent" tools:context="com.example.ilmukomputer.mycipher.mainactivity" android:background="@drawable/background"> <TabHost android:id="@+id/tabhost" android:layout_height="match_parent"> <LinearLayout android:id="@+id/linearlayout" android:layout_height="match_parent" android:orientation="vertical"> <TabWidget android:id="@android:id/tabs" android:background="@color/colorprimary"></tabwidget> <FrameLayout android:id="@android:id/tabcontent" android:layout_height="match_parent"> </FrameLayout> </LinearLayout> </TabHost> </RelativeLayout> <include android:id="@+id/layout1" layout="@layout/layout_encrypt" android:layout_height="match_parent"></include> <include android:id="@+id/layout2" layout="@layout/layout_decrypt" android:layout_height="match_parent"></include> 5. layout_encrypt.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="match_parent">
A-11 <TextView android:id="@+id/tv_ciphertext_en" android:layout_width="fill_parent" android:layout_height="fill_parent" android:hint="pesan Tersandi" android:gravity="left" android:textisselectable="true" android:padding="20dp" android:layout_margin="10dp" android:layout_below="@+id/et_key2_en" android:layout_above="@+id/et_plaintext_en" android:id="@+id/b_encrypt" android:background="@drawable/ic_encrypt" android:layout_marginleft="10dp" android:layout_marginright="10dp" android:layout_alignparentbottom="true" <EditText android:id="@+id/et_plaintext_en" android:inputtype="text" android:hint="tulis Pesan" android:maxlines="1" android:minheight="40dp" android:gravity="center_vertical" android:padding="10dp" android:layout_tostartof="@+id/b_encrypt" android:layout_marginleft="10dp" android:layout_alignparentstart="true" android:layout_alignparentbottom="true" /> <EditText android:id="@+id/et_key1_en" android:ems="10" android:inputtype="textpassword" android:hint="kunci 1" android:maxlines="1" android:gravity="center_vertical" android:paddingleft="10dp" android:paddingtop="5dp" android:paddingbottom="5dp" android:layout_below="@+id/b_clear_en" android:layout_tostartof="@+id/cb_view1_en" /> <EditText android:id="@+id/et_key2_en" android:ems="10" android:inputtype="numberpassword" android:hint="kunci 2" android:maxlines="1" android:gravity="center_vertical" android:paddingleft="10dp" android:paddingtop="5dp" android:paddingbottom="5dp" android:layout_margintop="5dp" android:layout_below="@+id/et_key1_en"
A-12 android:layout_tostartof="@+id/cb_view2_en" android:layout_alignstart="@+id/et_key1_en" /> android:id="@+id/b_clear_en" android:background="@drawable/ic_clear" android:layout_alignparenttop="true" android:id="@+id/b_about_en" android:background="@drawable/ic_about" android:layout_torightof="@+id/b_help_en" android:layout_alignparenttop="true" /> android:id="@+id/b_help_en" android:background="@drawable/ic_help" android:layout_alignparentstart="true" android:layout_alignparenttop="true" /> <CheckBox android:id="@+id/cb_view1_en" android:layout_width="40dip" android:layout_height="40dip" android:layout_below="@+id/b_clear_en" android:layout_alignbottom="@+id/et_key1_en" <CheckBox android:id="@+id/cb_view2_en" android:layout_width="40dip" android:layout_height="40dip" android:layout_below="@+id/et_key1_en" android:layout_alignbottom="@+id/et_key2_en" </RelativeLayout> 6. layout_decrypt.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="match_parent"> <TextView android:id="@+id/tv_plaintext_de" android:layout_width="fill_parent" android:layout_height="fill_parent" android:hint="pesan Asli" android:gravity="left" android:textisselectable="true" android:padding="20dp" android:layout_margin="10dp" android:layout_below="@+id/et_key2_de" android:layout_above="@+id/et_ciphertext_de" android:id="@+id/b_decrypt"
A-13 android:background="@drawable/ic_decrypt" android:layout_marginleft="10dp" android:layout_marginright="10dp" android:layout_alignparentbottom="true" <EditText android:id="@+id/et_ciphertext_de" android:inputtype="text" android:hint="tulis Pesan Tersandi" android:maxlines="1" android:minheight="40dp" android:gravity="center_vertical" android:padding="10dp" android:layout_tostartof="@+id/b_decrypt" android:layout_marginleft="10dp" android:layout_alignparentstart="true" android:layout_alignparentbottom="true" /> <EditText android:id="@+id/et_key1_de" android:ems="10" android:inputtype="textpassword" android:hint="kunci 1" android:maxlines="1" android:gravity="center_vertical" android:paddingleft="10dp" android:paddingtop="5dp" android:paddingbottom="5dp" android:layout_below="@+id/b_clear_de" android:layout_tostartof="@+id/cb_view1_de" /> <EditText android:id="@+id/et_key2_de" android:ems="10" android:inputtype="numberpassword" android:hint="kunci 2" android:maxlines="1" android:gravity="center_vertical" android:paddingleft="10dp" android:paddingtop="5dp" android:paddingbottom="5dp" android:layout_margintop="5dp" android:layout_below="@+id/et_key1_de" android:layout_tostartof="@+id/cb_view2_de" android:layout_alignstart="@+id/et_key1_de" /> android:id="@+id/b_clear_de" android:background="@drawable/ic_clear" android:layout_alignparenttop="true" android:id="@+id/b_about_de"
A-14 android:background="@drawable/ic_about" android:layout_torightof="@+id/b_help_de" android:layout_alignparenttop="true" /> android:id="@+id/b_help_de" android:background="@drawable/ic_help" android:layout_alignparentstart="true" android:layout_alignparenttop="true" /> <CheckBox android:id="@+id/cb_view1_de" android:layout_width="40dip" android:layout_height="40dip" android:layout_below="@+id/b_clear_de" android:layout_alignbottom="@+id/et_key1_de" <CheckBox android:id="@+id/cb_view2_de" android:layout_width="40dip" android:layout_height="40dip" android:layout_below="@+id/et_key1_de" android:layout_alignbottom="@+id/et_key2_de" </RelativeLayout> 7. activity_help.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_height="match_parent" tools:context="com.example.ilmukomputer.mycipher.helpactivity" android:background="@drawable/background"> android:id="@+id/b_back" android:background="@drawable/ic_back" android:layout_alignparentstart="true" android:layout_alignparenttop="true" /> <TextView android:id="@+id/tv_menu_bantuan" android:text="menu Bantuan" android:textsize="50sp" android:layout_marginbottom="20dp" android:layout_below="@+id/b_back" android:layout_centerhorizontal="true" /> <Button android:id="@+id/b_penggunaan" android:text="penggunaan" android:layout_below="@+id/tv_menu_bantuan" android:layout_alignparentstart="true" android:minheight="90dp" /> <Button
A-15 android:id="@+id/b_algoritma" android:text="algoritma" android:layout_below="@+id/b_penggunaan" android:layout_alignparentstart="true" android:layout_alignend="@+id/b_penggunaan" android:minheight="90dp" /> <TextView android:id="@+id/tv_bantuan" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="penjelasan" android:layout_marginright="10dp" android:padding="20dp" android:layout_alignbottom="@+id/b_algoritma" android:layout_toendof="@+id/b_penggunaan" android:layout_below="@+id/tv_menu_bantuan" android:layout_margintop="10dp" /> <FrameLayout android:id="@android:id/tabcontent" android:layout_height="match_parent" android:layout_below="@+id/tv_bantuan" android:layout_alignparentbottom="true" android:layout_toendof="@+id/b_penggunaan" android:padding="20dp" android:layout_marginright="10dp" > <include android:id="@+id/layout3" layout="@layout/layout_encrypt" ></include> </FrameLayout> </RelativeLayout> 8. activity_about.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_height="match_parent" tools:context="com.example.ilmukomputer.mycipher.aboutactivity" android:background="@drawable/background"> android:id="@+id/b_back" android:background="@drawable/ic_back" android:layout_alignparentstart="true" android:layout_alignparenttop="true" /> <TextView android:id="@+id/tv_menu_tentang" android:text="tentang Aplikasi" android:textsize="50sp" android:layout_below="@+id/b_back" android:layout_centerhorizontal="true" /> <ImageView android:id="@+id/iv_cover" android:layout_width="fill_parent"
A-16 android:layout_height="fill_parent" android:layout_marginleft="20dp" android:layout_marginright="20dp" android:layout_centerhorizontal="true" android:layout_below="@+id/tv_menu_tentang" android:src="@drawable/cover" /> </RelativeLayout>
B-1 CURRICULUM VITAE DATA PRIBADI PENDIDIKAN FORMAL Nama Lengkap Faisal Ridho Jenis Kelamin 121401055 Tempat, Tanggal Lahir Medan, 25 Mei 1994 Agama Islam Alamat Jl. Jermal VII Komp. Graha Jermal A.20 No.HP 081269946242 E-mail buatkirimtugas@gmail.com Alamat Orang Tua Jl. Jermal VII Komp. Graha Jermal A.20 No.HP Orang Tua 081260127059 1999 2000 TK Angkasa Lanud Padang 2000 2004 SD An-Nur Pekanbaru 2004 2006 SD Angkasa 1 Lanud Padang 2006 2009 SMPN 7 Padang 2009 2010 SMAN 10 Padang 2010 2012 SMAN 4 Pekanbaru 2012 sedang berlangsung Program Studi : S1 IlmuKomputer KEMAMPUAN Programming Database Bahasa C++, C#, Java MySQL Indonesia, Inggris