Не можете расшифровать некоторые пароли? - PullRequest
0 голосов
/ 28 марта 2019

Я добавил программу проверки паролей для своей программы, я думал, что она работает нормально, так как я мог сохранить пароль в файле (в кодировке) и мог ввести пароль в поле пароля, и это позволило мне без проблем войти в основную программу. Однако сегодня я тестировал больше и обнаружил, что некоторые пароли не работают, и я понятия не имею, почему это так. Я включил оба метода: один кодирует пароль, другой декодирует его. Я включил метод проверки, который считывает файл паролей, декодирует пароль и проверяет, совпадает ли введенный пароль с сохраненным. Я не мог узнать, какие типы паролей не работают, это не длина, больше как символы, которые были использованы. Заранее спасибо

public static char[] encode(int offset, char[] charArray) {

    char[] arrEnc = new char[charArray.length];

    for (int i = 0; i < charArray.length; i++) {

        int verschiebung = (charArray[i] + offset) % 128;

        arrEnc[i] = (char) (verschiebung);

    }
    return arrEnc;

}

public static char[] decode(int offset, char[] charArray) {

    char[] arrEnc = new char[charArray.length];

    int verschiebung;

    for (int i = 0; i < charArray.length; i++) {

        if (charArray[i] - offset < 0) {
            verschiebung = charArray[i] - offset + 128;

        } else {
            verschiebung = (charArray[i] - offset) % 128;

            arrEnc[i] = (char) (verschiebung);
        }
    }
    return arrEnc;

}

private void verify() {
    try {
        FileReader fr = new FileReader(pws);
        BufferedReader br = new BufferedReader(fr);
        char[] arr = br.readLine().toCharArray();
        char[] newArr = decode(arr.length, arr);
        String pw = new String(newArr);
        String masterPw = "Kassa";
        if (passwordField.getText().equals(pw) || 
                  passwordField.getText().equals(masterPw)) {
            setVisible(false);
            starto.setVisible(true);
            br.close();
        }

    } catch (Exception e) {
        e.printStackTrace();
    }
}

Любой пароль должен быть в состоянии сохранить и расшифровать

1 Ответ

0 голосов
/ 28 марта 2019

У вас ошибка в коде.

if (charArray[i] - offset < 0) {
        verschiebung = charArray[i] - offset + 128;
        ...

Здесь вы забыли поставить

arrEnc[i] = (char) (verschiebung);

Таким образом, вы должны присвоить verschiebung arrEnc[i] в первом блоке условийв методе декодирования.

...