Selasa, 09 Januari 2018

Tutorial Form Login OTP (One Time Password) Decrypt dan Encrypt

Nama : Tsurayya Athifah
NIM   : 5150311021

Kelas  : Sistem Informasi A

Disini saya akan mencoba membuat bagaimana membuat Aplikasi OTP dengan Random Password yang menggunakan Netbeans dan Android Studio.


TUTORIAL APLIKASI OTP DI NETBEANS

1. Pertama-tama siapkan aplikasi yang dibutuhkan.
2. Kemudian , buka aplikasi Netbeans
3. Cari menu File kemudian pilih New Project 
Ikuti petunjuk gambar dibawah ini :

4.  pilih Java kemudia Java Application kemudian pilih next

5. Beri Nama Project dan pilih Finish
6. Kemudian tambahkan Package , Java Class dan JFrame yang belum ada di project seperti
  -package gui : 2 JFrame yang diberi nama JFrameLogin dan JFrameMenu
  -package dec : Java Class diberi nama Decrypt
  -package enc : Java Class diberi nama Encrypt
  -package  random : Java Class diberi nama Random
7. Pilih Java Class Encrypt.java dan masukkan syntax

 //import package random dan class Random

  import random.Random;

  public class Encrypt {

    private String palsu;
    private String asli="TEST";

    public Encrypt() {
        Random rd = new Random();
        this.asli = rd.getStr();
    }


//fungsi passwod random untuk password palsu   
 public String getPalsu() {
        String WordKey = "LOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHA";
        String NumKey = "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789";
        String CodeKey = "~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.";
        //String toEncrypt = "Aku kirim sejumlah Rp.17.800.100,00 \"(tujuh belas juta)\" syaratnya harus lengkap";
        String toEncrypt = this.asli;
        WordKey = WordKey.toLowerCase();
        toEncrypt = toEncrypt.toLowerCase();

        char wordArray[] = WordKey.toCharArray();
        char numArray[] = NumKey.toCharArray();
        char charArray[] = toEncrypt.toCharArray();
        char codeArray[] = CodeKey.toCharArray();

        for (int i = 0; i < toEncrypt.length(); i++) {
            if (Character.isLetter(charArray[i])) {
                if (Character.isUpperCase(charArray[i])) {
                    charArray[i] = (char) (((int) charArray[i] - 65 + ((int) wordArray[i] - 97)) % 26 + 65);
                } else {
                    charArray[i] = (char) (((int) charArray[i] - 97 + ((int) wordArray[i] - 97)) % 26 + 97);
                }
            } else if ((int) charArray[i] >= 48 && (int) charArray[i] < 58) {
                charArray[i] = (char) (((int) charArray[i] - 48 + ((int) numArray[i])) % 10 + 48);
            } else if ((int) charArray[i] >= 30 && (int) charArray[i] < 48) {
                charArray[i] = (char) (((int) charArray[i] - 30 + ((int) codeArray[i])) % 18 + 30);
            }
        }

        toEncrypt = new String(charArray);
        return toEncrypt;
    }

    public void setPalsu(String palsu) {
        this.palsu = palsu;
    }

    public String getAsli() { 
        return asli;
    }

    public void setAsli(String asli) {
        this.asli = asli;
    }
}


 8. Pilih Java Class Decrypt.java dan masukkan syntax


public class Decrypt {

    private String alsi;

    public Decrypt() {
    }

    public String getAlsi() {
        String WordKey = "LOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHA";
        String NumKey = "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789";
        String CodeKey = "~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.";

        String toDecrypt = this.alsi;

        WordKey = WordKey.toLowerCase();
        toDecrypt = toDecrypt.toUpperCase();

        char wordArray[] = WordKey.toCharArray();
        char numArray[] = NumKey.toCharArray();
        char charArray[] = toDecrypt.toCharArray();
        char codeArray[] = CodeKey.toCharArray();

        for (int i = 0; i < toDecrypt.length(); i++) {
            if (Character.isLetter(charArray[i])) {
                if (Character.isUpperCase(charArray[i])) {
                    charArray[i] = (char) (((int) charArray[i] - 65 - ((int) wordArray[i % WordKey.length()] - 97) + 104) % 26 + 65);
                } else {
                    charArray[i] = (char) (((int) charArray[i] - 97 - ((int) wordArray[i % WordKey.length()] - 97) + 104) % 26 + 97);
                }
            } else if ((int) charArray[i] >= 48 && (int) charArray[i] < 58) {
                charArray[i] = (char) (((int) charArray[i] - 48 - ((int) numArray[i]) + 80) % 10 + 48);
            } else if ((int) charArray[i] >= 30 && (int) charArray[i] < 48) {
                charArray[i] = (char) (((int) charArray[i] - 30 - ((int) codeArray[i])) % 18 + 48);
            }
        }

        toDecrypt = new String(charArray);
        return toDecrypt;
    }

    public void setAlsi(String alsi) {
        this.alsi = alsi;
    }
}

9. Pilih Java Class Random.java dan masukkan syntax :

//import fungsi dibawah ini
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;

public class Random {

    private String str;

    public String getStr() {
        //============== JANGKRIK ============================
        //int randomPin = (int) (Math.random() * 9000) + 1000;
        //str = String.valueOf(randomPin);
        //========== END OF JANGKRIK =========================
        //DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        DateFormat df = new SimpleDateFormat("ssmm"); 
        Calendar cl = Calendar.getInstance();
        str = ""+df.format(cl.getTime());
        str = "9"+str+"4";
        /*
        String cr = "";
        String hs = "";
        for (int i = 0; i < str.length(); i++) {
            cr = str.substring(i, i + 1);
            int ii = Integer.parseInt(cr);
            if (ii == 0) {
                cr = "A";
            } else if (ii == 1) {
                cr = "B";
            } else if (ii == 2) {
                cr = "C";
            } else if (ii == 3) {
                cr = "D";
            } else if (ii == 4) {
                cr = "E";
            } else if (ii == 5) {
                cr = "F";
            } else if (ii == 6) {
                cr = "G";
            } else if (ii == 7) {
                cr = "H";
            } else if (ii == 8) {
                cr = "I";
            } else if (ii == 9) {
                cr = "J";
            } else {
                cr = "";
            }
            hs = hs + cr;
        }
*/
        return str;
    }

    public void setStr(String str) {
    }
}

10. Pilih JFrameLogin dan buat Tampilan seperti dibawah :
Menggunakan Components :

 Tampilan :


 syntaxnya :

- masukkan import di package gui
      package gui;
import dec.Decrypt;
import enc.Encrypt;
import gui.JFrameMenu;
import javax.swing.JOptionPane;


-tambahkan initComponents: 
            jLblPalsu.setText(getPwdPalsu());

-tambahkan private string getPwdAsli dan getPwdPalsu dibawah fungsi components
     
     private String getPwdAsli(){
        Encrypt enc = new Encrypt();
        return enc.getAsli();
    }
    private String getPwdPalsu(){
        Encrypt enc = new Encrypt();
        return enc.getPalsu();
    }
 


 -masukan syntax di button Decrypt


  private void jBtnToDecryptActionPerformed(java.awt.event.ActionEvent evt) {                                       
  String jtxttodec = jTxtToDecrypt.getText();
        Decrypt dec = new Decrypt();
        dec.setAlsi(jtxttodec);
        jLblAsli.setText(dec.getAlsi());  

-masukkan syntax di button Login

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                  
        if (jTextField1.getText().equals("admin")) {
if (jPasswordField1.getText().equals(jLblAsli.getText())) {
// Bila Login Sukses Maka Masuk Menu Utama
new JFrameMenu().show();
this.dispose(); }
else {
// Bila Login Gagal Maka Ulangi Login
JOptionPane.showMessageDialog(rootPane, "<error> Password Salah, Silahkan Coba Lagi");
jTextField1.setText("");
jPasswordField1.requestFocus(); }}
else {
JOptionPane.showMessageDialog(rootPane, "<error> Username, Silahkan Coba Lagi");
jTextField1.setText("");
jPasswordField1.setText("");
jTextField1.requestFocus();
}
    }                    
             
 

-Pilih  random dan masukkan syntax di Java Class Random.java
//masukkan import dibawah ini : 
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;

public class Random {

    private String str;

    public String getStr() {
        //============== JANGKRIK ============================
        //int randomPin = (int) (Math.random() * 9000) + 1000;
        //str = String.valueOf(randomPin);
        //========== END OF JANGKRIK =========================
        //DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        DateFormat df = new SimpleDateFormat("ssmm"); 
        Calendar cl = Calendar.getInstance();
        str = ""+df.format(cl.getTime());
        str = "9"+str+"4";
        /*
        String cr = "";
        String hs = "";
        for (int i = 0; i < str.length(); i++) {
            cr = str.substring(i, i + 1);
            int ii = Integer.parseInt(cr);
            if (ii == 0) {
                cr = "A";
            } else if (ii == 1) {
                cr = "B";
            } else if (ii == 2) {
                cr = "C";
            } else if (ii == 3) {
                cr = "D";
            } else if (ii == 4) {
                cr = "E";
            } else if (ii == 5) {
                cr = "F";
            } else if (ii == 6) {
                cr = "G";
            } else if (ii == 7) {
                cr = "H";
            } else if (ii == 8) {
                cr = "I";
            } else if (ii == 9) {
                cr = "J";
            } else {
                cr = "";
            }
            hs = hs + cr;
        }
*/
        return str;
    }

    public void setStr(String str) {
    }
}


11. Pilih JFrameMenu dan buat tampilan untuk Form Menu 



TUTORIAL TAMPILAN OTP DI ANDROID STUDIO

1. Buka Android Studio
2. Buatlah New Project 
3.Beri nama New Project
4. Kemudian Pilih Empety Activity
5. Pilih  MainActivity pada Java dan beri syntax :

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    TextView tvpwdasli;
    EditText edttxtpalsu;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public void btnOkClick(View view){
        tvpwdasli = (TextView ) findViewById(R.id.tvPwdAsli);
        edttxtpalsu = (EditText) findViewById(R.id.edttxtpalsu);
        String palsu = edttxtpalsu.getText().toString();
        OtpDecrypt obj = new OtpDecrypt(palsu);
        tvpwdasli.setText(obj.getPwdasli());
    }
}


 6. Pilih activity_main.xml dan beri syntax


<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    xmlns:app="http://schemas.android.com/apk/res-auto"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    android:paddingBottom="@dimen/activity_vertical_margin"    android:background="#41798b"    tools:context=".MainActivity">

    <EditText
        android:id="@+id/edttxtpalsu"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerHorizontal="true"        android:hint="PASSWORD PALSU"        android:layout_marginTop="50dp"        android:textColorHint="#fff"        android:textColor="#fff"        android:inputType="text" />

    <Button        android:id="@+id/btnOkId"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:onClick="btnOkClick"        android:layout_marginTop="30dp"        android:layout_marginLeft="20dp"        android:background="#000"        android:layout_centerHorizontal="true"        android:textColor="#fff"        android:text="OKE"        android:layout_below="@+id/edttxtpalsu"       />

    <TextView        android:id="@+id/tvPwdAsli"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:textColor="#fff"        android:textSize="36sp"        android:textStyle="bold"        android:layout_below="@+id/edttxtpalsu"        android:layout_marginTop="200dp"        android:layout_centerHorizontal="true"/>
</RelativeLayout>
7. Tambahkan Java Class dan beri nama OtpDecrypt dan beri syntax :
 
public class OtpDecrypt {

    private String pwdasli;

    public OtpDecrypt() {
    }

    public OtpDecrypt(String pwdasli) {
        this.pwdasli = pwdasli;
    }

    public String getPwdasli() {
        String WordKey = "LOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHA";
        String NumKey = "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789";
        String CodeKey = "~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.";

        String toDecrypt = this.pwdasli;

        WordKey = WordKey.toLowerCase();
        toDecrypt = toDecrypt.toUpperCase();

        char wordArray[] = WordKey.toCharArray();
        char numArray[] = NumKey.toCharArray();
        char charArray[] = toDecrypt.toCharArray();
        char codeArray[] = CodeKey.toCharArray();

        for (int i = 0; i < toDecrypt.length(); i++) {
            if (Character.isLetter(charArray[i])) {
                if (Character.isUpperCase(charArray[i])) {
                    charArray[i] = (char) (((int) charArray[i] - 65 - ((int) wordArray[i % WordKey.length()] - 97) + 104) % 26 + 65);
                } else {
                    charArray[i] = (char) (((int) charArray[i] - 97 - ((int) wordArray[i % WordKey.length()] - 97) + 104) % 26 + 97);
                }
            } else if ((int) charArray[i] >= 48 && (int) charArray[i] < 58) {
                charArray[i] = (char) (((int) charArray[i] - 48 - ((int) numArray[i]) + 80) % 10 + 48);
            } else if ((int) charArray[i] >= 30 && (int) charArray[i] < 48) {
                charArray[i] = (char) (((int) charArray[i] - 30 - ((int) codeArray[i])) % 18 + 48);
            }
        }

        toDecrypt = new String(charArray);
        return toDecrypt;

    }

    public void setPwdasli(String pwdasli) {
        this.pwdasli = pwdasli;
    }
}


8. Tampilan Aplikasi OTP di Android Studio


PROSES OTP di NETBEANS DAN ANDROID STUDIO 



Masukkan Password Palsu ke dalam Aplikasi Android
Kemudian Setelah tekan Button Oke maka akan muncul password asli , dan password asli masukan
ke aplikasi netbeans di kolom "Masukkan Password Asli"
Kemudian Tekan Decrypt
Munculah Hasil dari Passwordnya , Kemudia Hasil Password dimasukan
dalam Kolom "Password Hasil"dan Hak Akses yang telah dibuat ,
disini saya membuat hak akses dengan nama admin.
Setelah itu , tekan button Login maka jika berhasil akan muncul Form selanjutnya
yaitu Tampilan Home.

Masuk ke tampilan Home
Jadi sudah berhasil masuk di Form Login OTP. 
Dari tutorial diatas maka aplikasi otp sudah berhasil. 

Thankyou.  Maaf jika ada kesalahan atau kekurangan ๐Ÿ˜Š๐Ÿ˜Š๐Ÿ˜Š