how to send encrypted messages between two parties in java

Words
455
Reading
3 min
Listen
Play
8y

Repository

https://github.com/dmlloyd/openjdk

What Will I Learn?

  • You will learn how to connect two program on Netbeans.
  • You will learn how to encrypt message.
  • You will learn about hill cipher method

Requirements

State the requirements the user needs in order to follow this tutorial.

  • you must know basic of java programming.
  • you must know how to implement encryption method.

Difficulty

Choose one of the following options:

  • Basic

Tutorial Contents

on this occasion I will make a program to encrypt messages between two parties or more using the hill chipper method. the first party will write a message that will be converted into codes that cannot be understood because it has been encrypted, and then the second user will enter the password, the message can be read.


  • the first step you have to do is create a package for the two programs that we will create later.



  • okay, then create a new class in the package that we made earlier.
  • then type this code, I will explain it at the bottom.
package encryptionmessage;
import java.security.Key;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import javax.swing.JOptionPane;
import javax.xml.bind.DatatypeConverter;
import java.lang.String;
 
public class sender {

public static void main(String[] args)throws IOException {
    int Port =Integer.parseInt(JOptionPane.showInputDialog("please create password"));
String IP = JOptionPane.showInputDialog("Input Your IP");
Socket sock=new Socket("192.168.17",123456);
DataInputStream in= new DataInputStream(sock.getInputStream());
System.out.println(in.readUTF());
DataOutputStream out =new DataOutputStream(sock.getOutputStream());
out.writeUTF("message sending");
}
 public static void main(String[] args) throws Exception {
        String password = JOptionPane.showInputDialog("Input the key: ");
        String message = JOptionPane.showInputDialog("Input Your message: ");
        String encryptionMessage =  encryptAES(messageText, keyEncryption);  
        JOptionPane.showMessageDialog(null,messageEncrypted);
 }
  private static byte[] convertToByte(String kunci) {
        byte[] array_byte = new byte[20];
        int i = 0;
        while (i < kunci.length()) {
            array_byte[i] = (byte) kunci.charAt(i);
            i++; }
        if (i < 20) {
            while (i < 20) {
                array_byte[i] = (byte) i;
                i++;
            } }
        return array_byte;
 }
 sock.close();
      
    }
}
  • Okay, I will explain a little about the program above.
  • This is a declaration of package and class names.
package encryptionmessage;
public class sender {
  • and this is the process of making parts to enter passwords and servers between the two programs.
int Port =Integer.parseInt(JOptionPane.showInputDialog("please create password"));
String IP = JOptionPane.showInputDialog("Input Your IP");
  • and this is the part to display notifications that the message has been sent.
DataOutputStream out =new DataOutputStream(sock.getOutputStream());
out.writeUTF("message sending");
  • the code below serves to display the message input window.
String message = JOptionPane.showInputDialog("Input Your message: ");
  • This serves to display messages that have been encryptedJOptionPane.showMessageDialog(null,messageEncrypted);
  • and this is a very important part of the formula for converting messages into incomprehensible codes.
  private static byte[] convertToByte(String key) {
        byte[] array_byte = new byte[20];
        int i = 0;
        while (i < kunci.length()) {
            array_byte[i] = (byte) kunci.charAt(i);
            i++; }
        if (i < 20) {
            while (i < 20) {
                array_byte[i] = (byte) i;
                i++;
            } }
        return array_byte;
 }
  • for the sender program is finish, then we will make the second program in the same package, the recipient program.
  • create a new class with the name receiver and type the following code.
package encryptionmessage;
import java.security.Key;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import javax.swing.JOptionPane;
import javax.xml.bind.DatatypeConverter;
import java.lang.String;
 
public class receiver {
    public static void main(String[] args) throws IOException{
        int Port =Integer.parseInt(JOptionPane.showInputDialog("Input the passord"));
String IP = JOptionPane.showInputDialog("Input Your IP");
       ServerSocket serverSock=new ServerSocket(123456);
       Socket Sock=serverSock .accept();
       DataOutputStream out =new DataOutputStream(Sock.getOutputStream());
       out.writeUTF("you have message");
       DataInputStream in= new DataInputStream(Sock.getInputStream());
           
    }
    public static String decryptAES(String encryptedData, String encryptionKey)
            throws Exception {
        Cipher c = Cipher.getInstance("AES");
        Key key = generateKey(encryptionMessage);
        c.init(Cipher.DECRYPT_MODE, key);

        byte[] decordedValue = DatatypeConverter
                .parseBase64Binary(encryptedData);
        byte[] decValue = c.doFinal(decordedValue);
        String decryptedValue = new String(decValue);
        return decryptedValue;
        JOptionPane.showMessageDialog(null,encryptionMessage);
        JOptionPane.showMessageDialog(null,message);
      System.out.println(in.readUTF());
       Sock.close(); 
    }
}

  • actually the second program is almost the same as the first program, the difference is only in the method.
  • I will explain a little about the program above.
  • this is class encryption.
public static String decryptAES(String encryptedData, String encryptionKey)
   throws Exception {
  • this is the process of calling the cipher methodCipher c = Cipher.getInstance("AES");
  • and this is the generate key process
Key key = generateKey(encryptionMessage);
        c.init(Cipher.DECRYPT_MODE, key);
  • and this is the message conversion process
byte[] decordedValue = DatatypeConverter
                .parseBase64Binary(encryptedData);
        byte[] decValue = c.doFinal(decordedValue);
        String decryptedValue = new String(decValue);
        return decryptedValue;
  • the last is the section to display messages that have been decrypted.
JOptionPane.showMessageDialog(null,encryptionMessage);
        JOptionPane.showMessageDialog(null,message);
  • Okay, the two programs have been finished, now we will run it.
  • first we will run the sender program, right click and select run file.

  • then it will appear like this, enter the key.

  • then enter the message.

  • this is a message sent, encrypted.

  • the next step is running the program receiver
  • then enter the password.

  • then the message will appear.

  • Okay, the tutorial is complete, don't forget to try.

Curriculum

Include a list of related tutorials you have already shared on Utopian that make up a Course Curriculum, if applicable.


Proof of Work Done

https://gist.github.com/jerryalexis/e691e1d18ea19014e2bfe43a4c75c30e

how to send encrypted messages between two parties in java | Ecency