Итак, я решил создать небольшую «кодирующую» программу, которая использует простой алгоритм и пока все работает.я придумал алгоритм, а затем нашел его обратное, чтобы «декодировать» данную строку.
Как это работает, так это то, что в командной строке вы делаете «Java Diver lock * 1005»* сообщение пароль".Затем он принимает значения ascii и запускает их по алгоритму Z_n = (X_n + Y_n) / 2, давая вам «закодированную» строку, которую затем можно использовать в аргументах программы при запуске как «java Driver unlock * 1010».* код пароль".Он принимает эти значения и пропускает их через X_n = 2Z_n - y_n.
Эти алгоритмы работают при простом использовании части блокировки, и я поставил тот же процесс в конце блокировки, который происходит в процессе разблокировки,все же при попытке только процесса блокировки вывод неправильный.
Вот небольшой фрагмент о том, как я считаю, что он работает
блокировка Оливер Чиппер
разблокировка Chiä Chipper
x = сообщение, y = пароль, z = код
x & y = z
z & y = x
У меня такое ощущение, что оноимеет отношение к командной строке, не принимая символы, которые используются в качестве вывода, но подробное объяснение того, что я сделал, было бы здорово ... Спасибо!
public class Driver {
private static int[] x; //Message or code
private static int[] y; //Password
public static void main(String[] args) {
int SIZE = args[1].length() + args[2].length();
if (args[0].equals("lock")) {
lock(args, SIZE);
} else if (args[0].equals("unlock")) {
unlock(args, SIZE);
}
}
private static void lock(String[] args, int size) {
x = new int[size];
for (int i = 0; i < args[1].length(); i++) {
x[i] = args[1].charAt(i); //Message to ints
}
y = new int[size];
for (int i = 0; i < args[2].length(); i++) {
y[i] = args[2].charAt(i); //Password to ints
}
//code
int[] z = new int[size];
for (int i = 0; i < size; i++) {
z[i] = ((x[i] + y[i]) * 2); //Locking algorithm
System.out.print((char)z[i]);
}
System.out.println("\n");
for (int i = 0; i < size; i++) {
System.out.print((char)((z[i] / 2) - y[i])); //Unlocking algorithm
}
}
private static void unlock(String[] args, int size) {
x = new int[size];
for (int i = 0; i < args[1].length(); i++) {
x[i] = args[1].charAt(i); //Code to ints
}
y = new int[size];
for (int i = 0; i < args[2].length(); i++) {
y[i] = args[2].charAt(i); //Password to ints
}
for (int i = 0; i < size; i++) {
System.out.print((char)((x[i] / 2) - y[i])); //Unlocking algorithm
}
}}