Подбор пароля на n символов

 
0
 
Java
ava
Федор42 | 18.12.2016, 22:24
Доброе время суток. Уважаемые пользователи. Идея следующая: код подбирает пароль прямым перебором из алфавита. Вводим - подбираем - выводим (вводимое, время и кол-во опробованных паролей)
Прошу вас помочь: указать где могут быть косяки (переполнения данных, ...), помочь ускорить проверку (оптимизировать) или совет, что можно выкинуть.
Кодю первый раз, прошу не смеяться =)


package com.company;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    public static void main(String[] args) throws IOException {
        char abc[] = new char[]{'0','1','2','3','4','5','6','7','8','9',
                'q','w','e','r','t','y','u','i','o','p','a','s','d','f','g',
                'h','j','k','l','z','x','c','v','b','n','m',
                'Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G',
                'H','J','K','L','Z','X','C','V','B','N','M',
                'ё','й','ц','у','к','е','н','г','ш','щ','з','х','ъ','ф','ы','в','а','п',
                'р','о','л','д','ж','э','я','ч','с','м','и','т','ь','б','ю',
                'Ё','Й','Ц','У','К','Е','Н','Г','Ш','Щ','З','Х','Ъ','Ф','Ы','В','А','П',
                'Р', 'О','Л','Д','Ж','Э','Я','Ч','С','М','И','Т','Ь','Б','Ю'};
int m = 0;
        int n = 0;
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Введите пароль: ");
        String p1 = reader.readLine();
        String p2 = "";
        long lBegin = System.currentTimeMillis();
        outer1:while (true){
           int size;
            m = m + 1;
            size = m;
            int arr[] = new int[size];
            outer:while (true) {
                for (int ndx : arr) {
                    p2 = p2 + String.valueOf(abc[ndx]);
                }
                n = ++n;
                if (p1.equals(p2)) {
                    long lEnd = System.currentTimeMillis();
                    System.out.println("Искомый пароль: "+p1);
                    long lDelta = lEnd - lBegin;
                    System.out.println("Паролей подобранно: "+n);
                    System.out.println("Время выполнения: "+lDelta+" mc");
                    break outer1;
                }
                p2 = "";
                int i = size - 1;
                while (arr[i] == abc.length - 1) {
                    arr[i] = 0;
                    i--;
                    if (i < 0) {
                        break outer;
                    }
                }
                arr[i]++;
            }
        }
    }
}

Kommentare (0)

Kommentare werden nicht hinzugefügt

Registrieren Sie sich oder melden Sie sich an, um schreiben zu können.
Unternehmen des Tages
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Mitwirkende
advanced
Absenden