¿Cómo cifrar y descifrar texto en Android usando criptografía?

La criptografía es una técnica de seguridad de la información y las comunicaciones mediante el uso de códigos para que solo aquellas personas a las que está destinada la información puedan entenderla y procesarla. Previniendo así el acceso no autorizado a la información. El prefijo «cripta» significa «oculto» y el sufijo grafía significa «escrito».

Descripción del proyecto

En este artículo, crearemos una aplicación de Android que puede cifrar y descifrar un mensaje utilizando el algoritmo de codificación y decodificación respectivamente. La página de inicio de la aplicación le dará al usuario dos opciones:

  1. Cifrado: Es el proceso de transformar un mensaje legible en uno ilegible. Para ello utilizamos algoritmos de codificación.
  2. Descifrado: Es el proceso de transformar datos o información de una forma ilegible a una forma legible. Para ello utilizamos algoritmos de decodificación.

qué

Encrypt and Decrypt Text in Android Using Cryptography Sample GIF

Implementación paso a paso

Paso 1: Crear un nuevo proyecto

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Java como lenguaje de programación.

Paso 2: antes de ir a la sección de codificación, primero debe hacer una tarea previa

Modifique el archivo colors.xml:

XML

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="colorPrimary">#6200EE</color> 
    <color name="colorPrimaryDark">#3700B3</color> 
    <color name="colorAccent">#03DAC5</color> 
    <color name="green">#0F9D58</color>
</resources>

Modifique el archivo style.xml: cambie AppTheme a NoActionBar

XML

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
</resources>

Cree una clase Java para el algoritmo de codificación y decodificación:

Necesitamos crear dos clases Java cada una para codificar y decodificar algoritmos. Para hacerlo, haga clic con el botón derecho y seleccione la nueva opción de clase Java y créelos y nombre el archivo como Encode and Decode .

Crear actividades vacías para pantallas de cifrado y descifrado:

Necesitamos crear dos actividades cada una para las pantallas de cifrado y descifrado. Para hacerlo, haga clic con el botón derecho y seleccione la nueva opción Actividad vacía y cree ambas actividades y asígneles el nombre Codificador y Decodificador .

Paso 3: crea la página de inicio de la aplicación

Los códigos XML se utilizan para construir la estructura de la actividad, así como su parte de estilo. En la página de inicio, tendremos dos botones para Cifrado y Descifrado en el centro de la actividad. En la parte superior, tendremos un TextView para el título de la aplicación. A continuación se muestra el código para el archivo activity_main.xml :

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"
    android:background="#0F9D58"
    android:orientation="vertical"
    tools:context=".MainActivity">
  
    <!--Title of the application-->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="5dp"
        android:orientation="vertical">
  
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="Cryptography App"
            android:textColor="#FFFFFF"
            android:textSize="40dp"
            android:textStyle="bold" />
  
    </LinearLayout>
  
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_gravity="center"
        android:layout_marginTop="30dp"
        android:orientation="vertical">
  
        <!--Button for encryption-->
        <Button
            android:id="@+id/btVar1"
            android:layout_width="280dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_margin="50dp"
            android:background="#000000"
            android:text="Encryption"
            android:textColor="#FFFFFF"
            android:textSize="25dp"
            android:textStyle="bold" />
  
        <!--Button for decryption-->
        <Button
            android:id="@+id/btVar2"
            android:layout_width="280dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_margin="50dp"
            android:background="#000000"
            android:text="Decryption"
            android:textColor="#FFFFFF"
            android:textSize="25dp"
            android:textStyle="bold" />
  
    </LinearLayout>
  
</RelativeLayout>

Interfaz de usuario de salida:

Paso 4: trabajar con el archivo MainActivity.java

En el archivo MainActivity , haremos funcionar los dos botones para abrir las nuevas actividades. Para ello utilizaremos una función de Intent que nos permite pasar de una actividad a otra. Los dos parámetros de la función Intent son la clase de la actividad actual y la clase de la siguiente actividad. Llamaremos a esta función dentro de onClickListener de los dos botones. A continuación se muestra el código del archivo MainActivity.java . Se agregan comentarios dentro del código para comprender el código con más detalle.

Java

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
  
import androidx.appcompat.app.AppCompatActivity;
  
public class MainActivity extends AppCompatActivity {
  
    Button enc, dec;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
          
        // link both the button variables with its id
        enc = findViewById(R.id.btVar1);
        dec = findViewById(R.id.btVar2);
          
        // onClick function for encryption
        enc.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // Intent function to move to another activity
                Intent intent = new Intent(getApplicationContext(), Encoder.class);
                startActivity(intent);
            }
        });
  
        // onClick function for decryption
        dec.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // Intent function to move to another activity
                Intent intent = new Intent(getApplicationContext(), Decoder.class);
                startActivity(intent);
            }
        });
    }
}

Paso 5: agregue algoritmos de codificación y decodificación

Los algoritmos de codificación se utilizan para convertir el texto en un formato ilegible, mientras que los algoritmos de decodificación se utilizan para convertir un texto codificado en un formato legible. Hay muchos algoritmos que se pueden utilizar para realizar el cifrado y descifrado. En este algoritmo, convertiremos el texto en un número binario utilizando un algoritmo de cifrado. Para este proyecto, utilizaremos un algoritmo personalizado. También puede usar algoritmos de codificación y decodificación de tipo base en Java . Agregue el siguiente código en la clase Java de codificación y decodificación que creamos en el paso 2.

Encode.java: en esta clase, hemos creado una función de devolución que tomará un solo parámetro de una variable de string y devolverá un código cifrado en forma de string.

Java

public class Encode {
    public static String encode(String s) {
        // create a string to add in the initial
        // binary code for extra security
        String ini = "11111111";
        int cu = 0;
          
        // create an array
        int arr[] = new int[11111111];
          
        // iterate through the string
        for (int i = 0; i < s.length(); i++) {
            // put the ascii value of 
            // each character in the array
            arr[i] = (int) s.charAt(i);
            cu++;
        }
        String res = "";
          
        // create another array
        int bin[] = new int[111];
        int idx = 0;
          
        // run a loop of the size of string
        for (int i1 = 0; i1 < cu; i1++) {
              
            // get the ascii value at position
            // i1 from the first array
            int temp = arr[i1];
              
            // run the second nested loop of same size 
            // and set 0 value in the second array
            for (int j = 0; j < cu; j++) bin[j] = 0;
            idx = 0;
              
            // run a while for temp > 0
            while (temp > 0) {
                // store the temp module 
                // of 2 in the 2nd array
                bin[idx++] = temp % 2;
                temp = temp / 2;
            }
            String dig = "";
            String temps;
              
            // run a loop of size 7
            for (int j = 0; j < 7; j++) {
                  
                // convert the integer to string
                temps = Integer.toString(bin[j]);
                  
                // add the string using 
                // concatenation function
                dig = dig.concat(temps);
            }
            String revs = "";
              
            // reverse the string
            for (int j = dig.length() - 1; j >= 0; j--) {
                char ca = dig.charAt(j);
                revs = revs.concat(String.valueOf(ca));
            }
            res = res.concat(revs);
        }
        // add the extra string to the binary code
        res = ini.concat(res);
          
        // return the encrypted code
        return res;
    }
}

Decode.java: en esta clase, hemos creado una función de devolución que tomará un solo parámetro de una variable de string del código cifrado y devolverá un texto descifrado en forma de string.

Java

import android.util.Log;
  
public class Decode {
    public static String decode(String s) {
        String invalid = "Invalid Code";
  
        // create the same initial
        // string as in encode class
        String ini = "11111111";
        Boolean flag = true;
  
        // run a loop of size 8
        for (int i = 0; i < 8; i++) {
            // check if the initial value is same
            if (ini.charAt(i) != s.charAt(i)) {
                flag = false;
                break;
            }
        }
        String val = "";
  
        // reverse the encrypted code
        for (int i = 8; i < s.length(); i++) {
            char ch = s.charAt(i);
            val = val.concat(String.valueOf(ch));
        }
  
        // create a 2 dimensional array
        int arr[][] = new int[11101][8];
        int ind1 = -1;
        int ind2 = 0;
  
        // run a loop of size of the encrypted code
        for (int i = 0; i < val.length(); i++) {
  
            // check if the position of the
            // string if divisible by 7
            if (i % 7 == 0) {
                // start the value in other
                // column of the 2D array
                ind1++;
                ind2 = 0;
                char ch = val.charAt(i);
                arr[ind1][ind2] = ch - '0';
                ind2++;
            } else {
                // otherwise store the value
                // in the same column
                char ch = val.charAt(i);
                arr[ind1][ind2] = ch - '0';
                ind2++;
            }
        }
        // create an array
        int num[] = new int[11111];
        int nind = 0;
        int tem = 0;
        int cu = 0;
  
        // run a loop of size of the column
        for (int i = 0; i <= ind1; i++) {
            cu = 0;
            tem = 0;
            // convert binary to decimal and add them
            // from each column and store in the array
            for (int j = 6; j >= 0; j--) {
                int tem1 = (int) Math.pow(2, cu);
                tem += (arr[i][j] * tem1);
                cu++;
            }
            num[nind++] = tem;
        }
        String ret = "";
        char ch;
        // convert the decimal ascii number to its
        // char value and add them to form a decrypted
        // string using conception function
        for (int i = 0; i < nind; i++) {
            ch = (char) num[i];
            ret = ret.concat(String.valueOf(ch));
        }
        Log.e("dec", "text 11 - " + ret);
  
        // check if the encrypted code was
        // generated for this algorithm
        if (val.length() % 7 == 0 && flag == true) {
            // return the decrypted code
            return ret;
        } else {
            // otherwise return an invalid message
            return invalid;
        }
    }
}

Paso 6: cree el diseño de cifrado

En el diseño de Cifrado, tendremos un TextView en la parte superior de la actividad para mostrar su título. A continuación, tendremos una Vista para crear una línea de margen. A continuación, habrá TextView y EditText para ingresar el texto que se cifrará. Debajo de eso tendremos un botón para cifrar el texto. Para mostrar el código encriptado tenemos otro TextView con un Botón para copiarlo. A continuación se muestra el código XML para el archivo activity_encoder.xml .

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"
    android:background="#0F9D58"
    android:orientation="vertical"
    tools:context=".Encoder">
  
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:orientation="vertical">
  
        <!--title of the activity-->
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="Encrypter"
            android:textColor="#FFFFFF"
            android:textSize="40sp"
            android:textStyle="bold" />
  
    </LinearLayout>
  
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:orientation="vertical">
  
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="5dp"
            android:orientation="vertical">
  
            <!--margin-->
            <View
                android:id="@+id/viewVar1"
                android:layout_width="wrap_content"
                android:layout_height="5dp"
                android:background="#000000" />
  
        </LinearLayout>
  
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"
            android:layout_marginTop="10dp"
            android:layout_marginRight="15dp"
            android:layout_marginBottom="80dp"
            android:orientation="vertical">
  
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="left"
                android:layout_marginTop="5dp"
                android:text="Enter Your Text Here"
                android:textColor="#FFFFFF"
                android:textSize="20dp"
                android:textStyle="bold" />
  
            <!--input text for encryption-->
            <EditText
                android:id="@+id/etVar1"
                android:layout_width="360dp"
                android:layout_height="60dp"
                android:layout_gravity="center"
                android:layout_marginTop="5dp"
                android:textColor="#FFFFFF"
                android:textSize="20sp" />
  
            <!--start encryption-->
            <Button
                android:id="@+id/btVar1"
                android:layout_width="230dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:background="#000000"
                android:onClick="enc"
                android:text="Encrypt"
                android:textColor="#FFFFFF"
                android:textSize="20dp"
                android:textStyle="bold" />
  
        </LinearLayout>
  
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="15dp"
            android:orientation="vertical">
  
            <!--margin-->
            <View
                android:id="@+id/viewVar2"
                android:layout_width="wrap_content"
                android:layout_height="5dp"
                android:background="#000000" />
  
        </LinearLayout>
  
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"
            android:layout_marginTop="5dp"
            android:layout_marginRight="15dp"
            android:orientation="vertical">
  
            <!--display encrypted text here-->
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="left"
                android:layout_marginTop="5dp"
                android:text="Your encrypted text here : "
                android:textColor="#FFFFFF"
                android:textSize="20dp"
                android:textStyle="bold" />
  
            <TextView
                android:id="@+id/tvVar1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="left"
                android:layout_marginTop="5dp"
                android:textColor="#FAFAFA"
                android:textSize="20dp" />
  
        </LinearLayout>
  
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:layout_marginLeft="15dp"
            android:layout_marginRight="15dp"
            android:orientation="vertical">
  
            <!--button to copy encrypted code-->
            <Button
                android:id="@+id/btVar3"
                android:layout_width="230dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:background="#000000"
                android:onClick="cp2"
                android:text="Copy Text"
                android:textColor="#FFFFFF"
                android:textSize="20sp"
                android:textStyle="bold" />
  
        </LinearLayout>
  
    </LinearLayout>
  
</RelativeLayout>

Interfaz de usuario de salida:

Paso 7: crea el diseño de descifrado

En el diseño de Descifrado , tendremos un TextView en la parte superior de la actividad para mostrar su título. A continuación, tendremos una Vista para crear una línea de margen. A continuación, habrá TextView y EditText para ingresar el código cifrado que se va a descifrar. Debajo de eso tendremos un botón para descifrar el texto. Para mostrar el código descifrado tenemos otro TextView con un Botón para copiarlo. A continuación se muestra el código XML para el archivo activity_decoder.xml .

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"
    android:background="#0F9D58"
    android:orientation="vertical"
    tools:context=".Decoder">
  
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:orientation="vertical">
  
        <!--Textview to display title of the activity-->
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="Decrypter"
            android:textColor="#FFFFFF"
            android:textSize="40dp"
            android:textStyle="bold" />
  
    </LinearLayout>
  
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_margin="5dp"
        android:orientation="vertical">
  
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="5dp"
            android:orientation="vertical">
  
            <!--view to create margin-->
            <View
                android:id="@+id/viewVar1"
                android:layout_width="wrap_content"
                android:layout_height="5dp"
                android:background="#000000" />
  
        </LinearLayout>
  
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"
            android:layout_marginTop="10dp"
            android:layout_marginRight="15dp"
            android:layout_marginBottom="50dp"
            android:orientation="vertical">
  
            <!--enter the code to be decrypted here-->
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="left"
                android:layout_marginTop="5dp"
                android:text="Enter Your Text Here"
                android:textColor="#FFFFFF"
                android:textSize="20sp"
                android:textStyle="bold" />
  
            <EditText
                android:id="@+id/etVar1"
                android:layout_width="360dp"
                android:layout_height="60dp"
                android:layout_gravity="center"
                android:layout_marginTop="5dp"
                android:textColor="#FFFFFF"
                android:textSize="20sp" />
  
            <!--button to decrypt the code-->
            <Button
                android:id="@+id/btVar1"
                android:layout_width="230dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:background="#000000"
                android:onClick="dec"
                android:text="Decrypt"
                android:textColor="#FFFFFF"
                android:textSize="20sp"
                android:textStyle="bold" />
  
        </LinearLayout>
  
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="15dp"
            android:orientation="vertical">
  
            <!--view to create margin-->
            <View
                android:id="@+id/viewVar2"
                android:layout_width="wrap_content"
                android:layout_height="5dp"
                android:background="#000000" />
  
        </LinearLayout>
  
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"
            android:layout_marginTop="5dp"
            android:layout_marginRight="15dp"
            android:orientation="vertical">
  
            <!--display the decrypted text here-->
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="left"
                android:layout_marginTop="5dp"
                android:text="Your decrypted text is here : "
                android:textColor="#FFFFFF"
                android:textSize="20sp" />
  
            <TextView
                android:id="@+id/tvVar2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="left"
                android:layout_marginTop="5dp"
                android:textColor="#FFFFFF"
                android:textSize="20sp" />
  
        </LinearLayout>
  
        <LinearLayout
  
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"
            android:layout_marginTop="5dp"
            android:layout_marginRight="15dp"
            android:orientation="vertical">
  
            <!--button to copy the decrypted text-->
            <Button
                android:id="@+id/btVar2"
                android:layout_width="230dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:background="#000000"
                android:onClick="cpl"
                android:text="Copy Text"
                android:textColor="#FFFFFF"
                android:textSize="20sp"
                android:textStyle="bold" />
  
        </LinearLayout>
  
    </LinearLayout>
  
</RelativeLayout>

Interfaz de usuario de salida:

Paso 8: trabajar con el archivo Encoder.java

En el archivo Encoder.java , llamaremos a la función que creamos en el archivo del Paso 5 ( Encode.java) . Primero, obtendremos la string de EditText y luego pasaremos el valor en la función de codificación. Eso nos devolverá el código encriptado de la string. Después de eso, estableceremos el código en TextView y, si no está vacío, permitiremos que el usuario copie el código en el portapapeles. Para realizar la función de cifrado , se utiliza el método onClick en el botón. Del mismo modo, también hemos configurado la función onClick() para copiar el código en el portapapeles del botón. A continuación se muestra el código para el Encoder.javaexpediente. Se agregan comentarios dentro del código para comprender el código con más detalle.

Java

import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
  
import androidx.appcompat.app.AppCompatActivity;
  
public class Encoder extends AppCompatActivity {
  
    EditText etenc;
    TextView enctv;
    ClipboardManager cpb;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_encoder);
  
        // link the edittext and textview with its id
        etenc = findViewById(R.id.etVar1);
        enctv = findViewById(R.id.tvVar1);
          
        // create a clipboard manager variable to copy text
        cpb = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
    }
  
    // onClick function of encrypt button
    public void enc(View view) {
        // get text from edittext
        String temp = etenc.getText().toString();
          
        // pass the string to the encryption 
        // algorithm and get the encrypted code
        String rv = Encode.encode(temp);
          
        // set the code to the edit text
        enctv.setText(rv);
    }
  
    // onClick function of copy text button
    public void cp2(View view) {
        // get the string from the textview and trim all spaces
        String data = enctv.getText().toString().trim();
          
        // check if the textview is not empty
        if (!data.isEmpty()) {
              
            // copy the text in the clip board
            ClipData temp = ClipData.newPlainText("text", data);
            cpb.setPrimaryClip(temp);
              
            // display message that the text has been copied
            Toast.makeText(this, "Copied", Toast.LENGTH_SHORT).show();
        }
    }
}

Paso 9: trabajar con el archivo Decoder.java

En el archivo Decoder.java , llamaremos a la función que creamos en el archivo del Paso 5 (Decode.java) . Primero, obtendremos el código encriptado de EditText y luego pasaremos el valor en la función de decodificación. Eso nos devolverá el texto descifrado de la string. Después de eso, estableceremos el texto en TextView y, si no está vacío, permitiremos que el usuario copie el código en el portapapeles. Para realizar la función de descifrado , se utiliza el método onClick() en el botón. Del mismo modo, también hemos configurado la función onClick() para copiar el código en el portapapeles del botón. A continuación se muestra el código para el Decoder.javaexpediente. Se agregan comentarios dentro del código para comprender el código con más detalle.

Java

import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
  
import androidx.appcompat.app.AppCompatActivity;
  
public class Decoder extends AppCompatActivity {
  
    EditText etdec;
    TextView dectv;
    ClipboardManager cplboard;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_decoder);
  
        // link the edittext and textview with its id
        etdec = findViewById(R.id.etVar1);
        dectv = findViewById(R.id.tvVar2);
          
        // create a clipboard manager variable to copy text
        cplboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
    }
  
    // onClick function of encrypt button
    public void dec(View view) {
        // get code from edittext
        String temp = etdec.getText().toString();
        Log.e("dec", "text - " + temp);
          
        // pass the string to the decryption algorithm 
        // and get the decrypted text
        String rv = Decode.decode(temp);
          
        // set the text to the edit text for display
        dectv.setText(rv);
        Log.e("dec", "text - " + rv);
    }
  
    // onClick function of copy text button
    public void cpl(View view) {
          
        // get the string from the textview and trim all spaces
        String data = dectv.getText().toString().trim();
          
        // check if the textview is not empty
        if (!data.isEmpty()) {
              
            // copy the text in the clip board
            ClipData temp = ClipData.newPlainText("text", data);
              
            // display message that the text has been copied
            Toast.makeText(this, "Copied", Toast.LENGTH_SHORT).show();
        }
    }
}

Producción:

Publicación traducida automáticamente

Artículo escrito por namanjha10 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *