/*
* Noah Becker
* Marriotts Ridge High School
* contest 4 Junior
* Reg Hahne
*/
import
java.io.File;
import
java.util.Scanner;
import
java.io.IOException;
public class
MatrixEncryptionClient
{
public static void main(String[] args) throws
IOException
{
//connecting to the file
String pathToFile = "G:";
File inFile = new File(pathToFile,
"matrixjr.txt");
Scanner inData = new
Scanner(inFile);
//declaring variables
String line = "", message,
matrixNums, codedMessage = "", letter1, letter2;
int a, b, c, d;
//processing data
for(int input = 0;input <
5;input++)
{
codedMessage = "";
line = inData.nextLine();
message = line.substring(0,
line.length() - 8);
matrixNums = line.substring(line.length()
- 8,line.length());
matrixNums =
matrixNums.replaceAll(" ","");
a =
Integer.valueOf(matrixNums.substring(0, 1));
b =
Integer.valueOf(matrixNums.substring(1, 2));
c =
Integer.valueOf(matrixNums.substring(2, 3));
d = Integer.valueOf(matrixNums.substring(3,
4));
if(message.length() % 2 != 0)
message += "
";
for(int i = 0; i <
message.length();i+=2)
{
letter1 =
message.substring(i, i + 1);
letter2 =
message.substring(i + 1, i+ 2);
codedMessage += change2letters(letter1,
letter2, a, b, c, d);
}
System.out.println(codedMessage);
}
}
//this method will encrypt 2 letters at a
time
public static String change2letters(String
l1, String l2, int a, int b,int c, int d)
{
int num1 = 0, num2 = 0;
String[] alphabet = {"A",
"B", "C", "D", "E", "F",
"G", "H", "I", "J", "K",
"L", "M",
"N",
"O", "P", "Q", "R", "S",
"T", "U", "V", "W", "X",
"Y", "Z", " "};
for(int index = 0;index <
27;index++)
{
if(l1.equals(alphabet[index]))
num1 = index + 1;
if(l2.equals(alphabet[index]))
num2 = index + 1;
}
return changeBacktoWords(num1, num2,
a, b, c, d, alphabet);
}
//this method will switch the numbers back
into words in the form of a coded message
public static String changeBacktoWords(int
num1, int num2, int a, int b, int c, int d, String[] alphabet)
{
String letter1 = "",
letter2 = "";
int holder = num1;
num1 = a * num1 + b * num2;
num2 = c * holder + d * num2;
if(num1 != 27)
letter1 = alphabet[(num1 % 27)
- 1];
else
letter1 = " ";
if(num2 != 27)
letter2 = alphabet[(num2 % 27)
- 1];
else
letter2 = " ";
return letter1 + letter2;
}
}
/*
LRQBVNOE
XKIXBQUB
KEKW
RNC RAIMEJEGPE
ROUTKSBAECPXECIX
*/