Алгоритм «кодирования», дающий другой результат в отдельном методе - PullRequest
0 голосов
/ 17 октября 2018

Итак, я решил создать небольшую «кодирующую» программу, которая использует простой алгоритм и пока все работает.я придумал алгоритм, а затем нашел его обратное, чтобы «декодировать» данную строку.

Как это работает, так это то, что в командной строке вы делаете «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
    }
}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...