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 {
@Override
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){
return false; }
}
for(i=0; i<key1.length(); i++){ j = (int) key1.charAt(i); if(j < 32 || j > 126){
}
for(i=0; i<key2.length(); i++){ j = (int) key2.charAt(i); if(j < 48 || j > 57){
return false; }
} } else{
return false; }
} else{
return false; }
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(){
@Override
public void onClick(View v) {
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++) {
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(){ @Override
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) + ""); }
}
if(Integer.parseInt(key2.charAt(j)+"") == kecil){ if(i == bar-1 && j >=
kol-((bar*kol)-ciphertext2.length())){
} 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);
public void onClick(View v) { et_plaintext_en.setText(""); et_key1_en.setText(""); et_key2_en.setText(""); tv_ciphertext_en.setText("");
Toast.makeText(MainActivity.this, "Kolom Inputan Telah Direset", Toast.LENGTH_SHORT).show();
} });
final ImageButton b_clear_de = (ImageButton) findViewById(R.id.b_clear_de); b_clear_de.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) { et_ciphertext_de.setText(""); et_key1_de.setText(""); et_key2_de.setText(""); tv_plaintext_de.setText("");
Toast.makeText(MainActivity.this, "Kolom Inputan Telah Direset", Toast.LENGTH_SHORT).show();
} });
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);
}
});
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(){
@Override
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(){
@Override
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(){
@Override
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(){
@Override
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;
/**
*/
public class HelpActivity extends AppCompatActivity { @Override
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() { @Override
public void onClick(View v) {
Intent i = new Intent(HelpActivity.this, MainActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i); }
});
b_penggunaan.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
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() { @Override
public void onClick(View v) {
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() {
@Override
public void onClick(View v) {
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", Toast.LENGTH_SHORT).show();
} });
ImageButton clear = (ImageButton) findViewById(R.id.b_clear_en); clear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
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.LENGTH_SHORT).show(); }
});
ImageButton help = (ImageButton) findViewById(R.id.b_help_en); help.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
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", Toast.LENGTH_SHORT).show();
} });
ImageButton about = (ImageButton) findViewById(R.id.b_about_en); about.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
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", Toast.LENGTH_SHORT).show();
} });
EditText pesan = (EditText) findViewById(R.id.et_plaintext_en); pesan.setInputType(InputType.TYPE_NULL);
pesan.setOnTouchListener(new View.OnTouchListener() { @Override
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", Toast.LENGTH_SHORT).show();
return false; }
});
EditText key1 = (EditText) findViewById(R.id.et_key1_en); key1.setInputType(InputType.TYPE_NULL);
key1.setOnTouchListener(new View.OnTouchListener() { @Override
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",
Toast.LENGTH_SHORT).show(); return false; }
});
EditText key2 = (EditText) findViewById(R.id.et_key2_en); key2.setInputType(InputType.TYPE_NULL);
key2.setOnTouchListener(new View.OnTouchListener() { @Override
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 " +
Apabila muncul pemberitahuan Periksa Kembali Inputan " +
"Anda, maka mungkin saja kunci yang digunakan tidak sesuai."); Toast.makeText(HelpActivity.this, "Kolom Kunci 2",
Toast.LENGTH_SHORT).show(); return false; }
});
TextView hasil = (TextView) findViewById(R.id.tv_ciphertext_en); hasil.setOnTouchListener(new View.OnTouchListener() {
@Override
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", Toast.LENGTH_SHORT).show();
return false; }
});
final CheckBox view1 = (CheckBox) findViewById(R.id.cb_view1_en); view1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { if(view1.isChecked()){
tv_bantuan.setText("Bila kotak diceklis maka akan memperlihatkan kunci pertama");
Toast.makeText(HelpActivity.this, "Kotak Lihat Kunci 1", Toast.LENGTH_SHORT).show();
} else{
tv_bantuan.setText("Bila kotak tidak diceklis maka akan menyembunyikan kunci pertama");
Toast.makeText(HelpActivity.this, "Kotak Lihat Kunci 1", Toast.LENGTH_SHORT).show();
} } });
final CheckBox view2 = (CheckBox) findViewById(R.id.cb_view2_en); view2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { if(view2.isChecked()){
tv_bantuan.setText("Bila kotak diceklis maka akan memperlihatkan kunci kedua");
Toast.makeText(HelpActivity.this, "Kotak Lihat Kunci 2", Toast.LENGTH_SHORT).show();
} else{
tv_bantuan.setText("Bila kotak tidak diceklis maka akan menyembunyikan kunci kedua");
Toast.makeText(HelpActivity.this, "Kotak Lihat Kunci 2", Toast.LENGTH_SHORT).show();
} } });
} }
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;
/**
* Created by ILMUKOMPUTER on 8/6/2016. */
public class AboutActivity extends AppCompatActivity { @Override
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() {
@Override
public void onClick(View v) {
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_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.ilmukomputer.mycipher.MainActivity"
android:background="@drawable/background">
<TabHost
android:id="@+id/tabHost"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"></TabWidget>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include
android:id="@+id/layout1" layout="@layout/layout_encrypt"
android:layout_width="match_parent"
android:layout_height="match_parent"></include>
<include
android:id="@+id/layout2" layout="@layout/layout_decrypt"
android:layout_width="match_parent"
android:layout_height="match_parent"></include>
</FrameLayout> </LinearLayout> </TabHost>
</RelativeLayout>
5.
layout_encrypt.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
<TextView
android:id="@+id/tv_ciphertext_en"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:hint="Pesan Tersandi"
android:background="@drawable/box"
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:layout_alignParentEnd="true" />
<ImageButton
android:id="@+id/b_encrypt"
android:layout_width="50dip"
android:layout_height="50dip"
android:background="@drawable/ic_encrypt"
android:gravity="center"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginBottom="10dp"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true" />
<EditText
android:id="@+id/et_plaintext_en"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="text"
android:hint="Tulis Pesan"
android:maxLines="1"
android:minHeight="40dp"
android:background="@drawable/box"
android:gravity="center_vertical"
android:padding="10dp"
android:layout_toStartOf="@+id/b_encrypt"
android:layout_marginLeft="10dp"
android:layout_marginBottom="10dp"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true" />
<EditText
android:id="@+id/et_key1_en"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPassword"
android:hint="Kunci 1"
android:maxLines="1"
android:background="@drawable/box"
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:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="numberPassword"
android:hint="Kunci 2"
android:maxLines="1"
android:background="@drawable/box"
android:gravity="center_vertical"
android:paddingLeft="10dp"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:layout_marginTop="5dp"
android:layout_toStartOf="@+id/cb_view2_en"
android:layout_alignStart="@+id/et_key1_en" />
<ImageButton
android:id="@+id/b_clear_en"
android:layout_width="50dip"
android:layout_height="50dip"
android:background="@drawable/ic_clear"
android:gravity="center"
android:layout_marginBottom="10dp"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true" />
<ImageButton
android:id="@+id/b_about_en"
android:layout_width="50dip"
android:layout_height="50dip"
android:background="@drawable/ic_about"
android:gravity="center"
android:layout_toRightOf="@+id/b_help_en"
android:layout_marginBottom="10dp"
android:layout_alignParentTop="true" />
<ImageButton
android:id="@+id/b_help_en"
android:layout_width="50dip"
android:layout_height="50dip"
android:background="@drawable/ic_help"
android:gravity="center"
android:layout_alignParentStart="true"
android:layout_marginBottom="10dp"
android:layout_alignParentTop="true" />
<CheckBox
android:id="@+id/cb_view1_en"
android:layout_width="40dip"
android:layout_height="40dip"
android:gravity="center"
android:layout_below="@+id/b_clear_en"
android:layout_alignBottom="@+id/et_key1_en"
android:layout_alignParentEnd="true" />
<CheckBox
android:id="@+id/cb_view2_en"
android:layout_width="40dip"
android:layout_height="40dip"
android:gravity="center"
android:layout_below="@+id/et_key1_en"
android:layout_alignBottom="@+id/et_key2_en"
android:layout_alignParentEnd="true" />
</RelativeLayout>
6.
layout_decrypt.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
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:background="@drawable/box"
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:layout_alignParentEnd="true" />
<ImageButton
android:layout_width="50dip"
android:layout_height="50dip"
android:background="@drawable/ic_decrypt"
android:gravity="center"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginBottom="10dp"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true" />
<EditText
android:id="@+id/et_ciphertext_de"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="text"
android:hint="Tulis Pesan Tersandi"
android:maxLines="1"
android:minHeight="40dp"
android:background="@drawable/box"
android:gravity="center_vertical"
android:padding="10dp"
android:layout_toStartOf="@+id/b_decrypt"
android:layout_marginLeft="10dp"
android:layout_marginBottom="10dp"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true" />
<EditText
android:id="@+id/et_key1_de"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPassword"
android:hint="Kunci 1"
android:maxLines="1"
android:background="@drawable/box"
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:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="numberPassword"
android:hint="Kunci 2"
android:maxLines="1"
android:background="@drawable/box"
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" />
<ImageButton
android:id="@+id/b_clear_de"
android:layout_width="50dip"
android:layout_height="50dip"
android:background="@drawable/ic_clear"
android:gravity="center"
android:layout_marginBottom="10dp"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true" />
<ImageButton
android:id="@+id/b_about_de"
android:layout_width="50dip"
android:background="@drawable/ic_about"
android:gravity="center"
android:layout_toRightOf="@+id/b_help_de"
android:layout_marginBottom="10dp"
android:layout_alignParentTop="true" />
<ImageButton
android:id="@+id/b_help_de"
android:layout_width="50dip"
android:layout_height="50dip"
android:background="@drawable/ic_help"
android:gravity="center"
android:layout_alignParentStart="true"
android:layout_marginBottom="10dp"
android:layout_alignParentTop="true" />
<CheckBox
android:id="@+id/cb_view1_de"
android:layout_width="40dip"
android:layout_height="40dip"
android:gravity="center"
android:layout_below="@+id/b_clear_de"
android:layout_alignBottom="@+id/et_key1_de"
android:layout_alignParentEnd="true" />
<CheckBox
android:id="@+id/cb_view2_de"
android:layout_width="40dip"
android:layout_height="40dip"
android:gravity="center"
android:layout_below="@+id/et_key1_de"
android:layout_alignBottom="@+id/et_key2_de"
android:layout_alignParentEnd="true" />
</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_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.ilmukomputer.mycipher.HelpActivity"
android:background="@drawable/background">
<ImageButton
android:id="@+id/b_back"
android:layout_width="50dip"
android:layout_height="50dip"
android:background="@drawable/ic_back"
android:gravity="center"
android:layout_marginBottom="10dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true" />
<TextView
android:id="@+id/tv_menu_bantuan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
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:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Penggunaan"
android:layout_below="@+id/tv_menu_bantuan"
android:layout_alignParentStart="true"
android:minHeight="90dp" />
android:id="@+id/b_algoritma"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
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:gravity="center"
android:background="@drawable/box"
android:layout_alignBottom="@+id/b_algoritma"
android:layout_toEndOf="@+id/b_penggunaan"
android:layout_below="@+id/tv_menu_bantuan"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="match_parent"
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"
android:layout_marginBottom="10dp"
android:background="@drawable/box"> <include
android:id="@+id/layout3" layout="@layout/layout_encrypt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></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_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.ilmukomputer.mycipher.AboutActivity"
android:background="@drawable/background">
<ImageButton
android:id="@+id/b_back"
android:layout_width="50dip"
android:layout_height="50dip"
android:background="@drawable/ic_back"
android:gravity="center"
android:layout_marginBottom="10dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true" />
<TextView
android:id="@+id/tv_menu_tentang"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
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_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" />