Создание программы простого шифрования с использованием абстрактного класса
Для домашней работы мне было поручено создать программу, которая шифрует строку на основе метода, называемого Rail Fence Cipher. (Я не знаю, является ли это общеизвестным или нет, или даже если вы, ребята, хотите точно увидеть, что это такое, поэтому я включил ссылку на Википедию, если вы тоже хотите увидеть).
Мне удалось зашифровать строку успешно прямым методом main. Я сейчас пишу код правильно, используя классы.
Я не уверен, должен ли я просто использовать нормальный класс и создать объект или нет. В первую очередь я хочу сделать класс абстрактным, просто манипулировать данными и возвращать зашифрованный метод. Я не совсем уверен, что это правильный путь. Я сомневаюсь, что у меня возникнут проблемы с написанием кода в абстрактном или объектном классе. Я не уверен, что считается правильным, хотя.
Кто-нибудь может предложить какое-либо руководство? Главная причина, по которой я не использую абстрактный класс, заключается в том, что эта программа проста и не использует никаких интерфейсов.
public final class Scrambler {
private Scrambler() {
}
/*
*Scrambles a string using a three line rail fence cipher technique
*
*/
public static String scrambleByThreeLines(String _pText) {
//takes the message string, removes spaces, and makes lowercase
_pText = _pText.replaceAll("[^a-zA-Z0-9]", "").toLowerCase();
//Takes the length of the plain text string, and identifies how long it is,
//then the next highest integer that is divisble by three
int length = _pText.length() + (4 - (_pText.length() % 4));
//creates a temporary array to use when populating the actual array that
//will contain the extra null characters
char[] tempText = _pText.toCharArray();
//creates what will be the full array including the null characters
char[] pText = new char[length];
//loop to populate full array
for (int i = 0; i < pText.length; i++) {
if (i < tempText.length) {
pText[i] = tempText[i];
} else {
pText[i] = 'x';
}
}
/*Scrambling function of the cipher-------------------------------------
*creates four strings that are concatenated togeather with a space inbetween
*utalizing the three rail cipher technique as shown on Page 13 of the
*Martin Gardner book, "Codes Ciphers, and Secret Writings"
*/
String one = "";
String two = "";
String three = "";
String four = "";
int counter = 0;
for (int i = 0; i < pText.length; i++) {
if ((i + 1) % 2 == 0) {
if (counter % 2 == 0) {
three += pText[i];
} else {
two += pText[i];
}
} else {
if (counter % 2 == 0) {
one += pText[i];
} else {
four += pText[i];
}
counter++;
}
}
return String.format(one + " " + two + " " + three + " " + four);
}
/*
*Unscrambles a string using a three line rail fence cipher technique
*/
public static String unscrableByThreeLines(String _cText) {
//splits the text into the four strings to decode-----------------------
String[] a = _cText.split(" ", 4);
char[] one = a[0].toCharArray();
char[] two = a[1].toCharArray();
char[] three = a[2].toCharArray();
char[] four = a[3].toCharArray();
//----------------------------------------------------------------------
//removes one char at a time in the correct order to decode to a String
String pText = "";
for(int i =0; i < one.length; i++){
pText += one[i];
pText += two[i];
pText += four[i];
pText += three[i];
}
return String.format(pText);
}
}