Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Write a program in JAVA to encrypt and decrypt strings of characters using Matri

ID: 3863186 • Letter: W

Question

Write a program in JAVA to encrypt and decrypt strings of characters using Matrix transposition cipher

Your program should contain functions/methods to encrypt a given plaintext string of characters

and a key and generate the corresponding ciphertext. It should also contain functions/methods to

decrypt a ciphertext string of characters and generate the corresponding plaintext.

Please attach

1-source code

2- txt files like

3- sample runs of the program

decrypt,txt encrypt,txt a key tot plain. tot

Explanation / Answer

public class TranspositionCipher1
{
public static String selectedKey;
public static char sortedKey[];
public static int sortedKeyPos[];

// default constructor define the default key
public TranspositionCipher1()
{
selectedKey = "megabuck";
sortedKeyPos = new int[selectedKey.length()];
sortedKey = selectedKey.toCharArray();
}

// Parameterized constructor define the custom key
public TranspositionCipher1(String myKey)
{
selectedKey = myKey;
sortedKeyPos = new int[selectedKey.length()];
sortedKey = selectedKey.toCharArray();
}

// To reorder data do the sorting on selected key
public static void doProcessOnKey2()
{
// Find position of each character in selected key and arrange it on
// alphabetical order
int min, i, j;
char orginalKey[] = selectedKey.toCharArray();
char temp;
// First Sort the array of selected key
for (i = 0; i < selectedKey.length(); i++)
{
min = i;
for (j = i; j < selectedKey.length(); j++)
{
if (sortedKey[min] > sortedKey[j])
{
min = j;
}
}
if (min != i)
{
temp = sortedKey[i];
sortedKey[i] = sortedKey[min];
sortedKey[min] = temp;
}
}
// Fill the position of array according to alphabetical order
for (i = 0; i < selectedKey.length(); i++)
{
for (j = 0; j < selectedKey.length(); j++)
{
if (orginalKey[i] == sortedKey[j])
sortedKeyPos[i] = j;
}
}
}

// to encrypt the targeted string
public static String doEncryption(String plainText)
{
int min, i, j;
char orginalKey[] = selectedKey.toCharArray();
char temp;
doProcessOnKey2();
// Generate encrypted message by doing encryption using Transpotion
// Cipher
int row = plainText.length() / selectedKey.length();
int extrabit = plainText.length() % selectedKey.length();
int exrow = (extrabit == 0) ? 0 : 1;
int rowtemp = -1, coltemp = -1;
int totallen = (row + exrow) * selectedKey.length();
char pmat[][] = new char[(row + exrow)][(selectedKey.length())];
char encry[] = new char[totallen];
int tempcnt = -1;
row = 0;
for (i = 0; i < totallen; i++)
{
coltemp++;
if (i < plainText.length())
{
if (coltemp == (selectedKey.length()))
{
row++;
coltemp = 0;
}
pmat[row][coltemp] = plainText.charAt(i);
}
else
{ // do the padding ...
pmat[row][coltemp] = '*';
}
}
int len = -1, k;
for (i = 0; i < selectedKey.length(); i++)
{
for (k = 0; k < selectedKey.length(); k++)
{
if (i == sortedKeyPos[k])
{
break;
}
}
for (j = 0; j <= row; j++)
{
len++;
encry[len] = pmat[j][k];
}
}
String p1 = new String(encry);
return (new String(p1));
}

// to decrypt the targeted string
public static String doDecryption(String s)
{
int min, i, j, k;
char key[] = selectedKey.toCharArray();
char encry[] = s.toCharArray();
char temp;
doProcessOnKey();
// Now generating plain message
int row = s.length() / selectedKey.length();
char pmat[][] = new char[row][(selectedKey.length())];
int tempcnt = -1;
for (i = 0; i < selectedKey.length(); i++)
{
for (k = 0; k < selectedKey.length(); k++)
{
if (i == sortedKeyPos[k])
{
break;
}
}
for (j = 0; j < row; j++)
{
tempcnt++;
pmat[j][k] = encry[tempcnt];
}
}
// store matrix character in to a single string
char p1[] = new char[row * selectedKey.length()];
k = 0;
for (i = 0; i < row; i++)
{
for (j = 0; j < selectedKey.length(); j++)
{
if (pmat[i][j] != '*')
{
p1[k++] = pmat[i][j];
}
}
}
p1[k++] = '';
return (new String(p1));
}

public static void main(String[] args)
{
TranspositionCipher tc = new TranspositionCipher();
System.out.println("Encrypted Message is: "
+ tc.doEncryption("Sanfoundry"));
System.out.println("Decrypted Message is: "
+ tc.doDecryption(tc.doEncryption("Sanfoundry")));
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote