Ошибка с моим генератором паролей грубой силы (Java)

1

Это назначение для класса, в основном сделать метод, который может "угадать" пароль, а затем отправить его другому классу, который будет дешифровать файл. У меня есть трудная часть.

import sussex.edu.Cryptography;

public class Final {

    public static void main(String[] args) throws Exception{
        //decrypter();
        Cryptography crypto = new Cryptography();

        String encrypted = "SourceFile_encrypted.txt";
        String decrypted = "SourceFile_decrypted.txt";
        String password = new String();

        crypto.setPassword(password);
        if(crypto.isPasswordValid()){
            System.out.println("Found password:" + password);
            crypto.decryptFile(encrypted, decrypted);
        }
        else{
            //Keep trying...
        }
    }
    public static String decrypter(){
        char array[] = new char[5];
        Cryptography crypto = new Cryptography();
        String password = new String();

        for (char c0 = 'A'; c0 <= 'Z'; c0++) {
            array[0] = c0;
            for (char c1 = 'A'; c1 <= 'Z'; c1++) {
                array[1] = c1;
                for (char c2 = 'A'; c2 <= 'Z'; c2++) {
                    array[2] = c2;
                    for (char c3 = 'A'; c3 <= 'Z'; c3++) {
                        array[3] = c3;
                        for (char c4 = 'A'; c4 <= 'Z'; c4++){
                            array[4] = c4;
                            String s = new String(array);
                            password = s;
                            System.out.println(password);
                            crypto.setPassword(password);
                            if(crypto.isPasswordValid()){
                                break;
                            }
                        }
                    }
                }
            }
        }
        return password;
    }
}

Он перебирает все возможные пароли и проходит мимо фактического пароля (OLLEH) и ничего не делает. Когда я вручную вводим пароль в первый crypto.setPassword (пароль); Он работает отлично. когда я вхожу в него, он выглядит как crypto.setPassword("OLLEH"); но если я вручную введу "OLLEH" в crypto.setPassword (пароль); внутри вложенного цикла он не работает. Так что моя ошибка там, я просто не вижу ее.

  • 0
    В методе decryptor вы создаете локальную переменную cryptor и никогда не устанавливаете пароль для OLLEH для этого экземпляра. Не знаете, как работает класс криптографии, но может ли это быть вашей проблемой?
Теги:
encryption
brute-force

1 ответ

2

Вероятно, ваш метод isPasswordValid() сравнивает строки с == вместо equals().

Это может объяснить, почему это сравнение возвращает true, когда оно против "OLLEH", но false, когда оно против String с тем же значением, но созданное с использованием new.

Попробуйте заменить password = s; по password = s.intern();

  • 0
    как я могу это исправить? У меня нет доступа к методу isPasswordValid ().
  • 0
    Смотрите редактирование выше.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню