“编码”算法在单独的方法中给出不同的结果

时间:2018-10-17 05:20:32

标签: java algorithm encoding

因此,我着手制作一个使用简单算法的小“编码”程序,到目前为止,所有程序都可以工作。我想出了算法,然后找到了它的逆向,以“解码”给定的字符串。

它的工作原理是在命令行中执行“ java Diver lock message password ”。然后,它获取ascii值,并通过算法Z_n =(X_n + Y_n)/ 2运行它,为您提供一个“已编码”字符串,该字符串随后可以在程序参数中用作“ java Driver unlock code 密码”。它采用这些值并通过X_n = 2Z_n-y_n运行它们。

这些算法仅在使用锁定部分时起作用,并且我在解锁过程中将与解锁过程相同的过程放在了锁的末尾,但是当仅尝试锁定过程时,输出不正确。

这里有一些关于我认为它是如何工作的摘要

锁定Oliver Chipper

解锁Chipä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
    }
}}

0 个答案:

没有答案