Доброе время суток. Уважаемые пользователи. Идея следующая: код подбирает пароль прямым перебором из алфавита. Вводим - подбираем - выводим (вводимое, время и кол-во опробованных паролей) Прошу вас помочь: указать где могут быть косяки (переполнения данных, ...), помочь ускорить проверку (оптимизировать) или совет, что можно выкинуть. Кодю первый раз, прошу не смеяться =)
| Код | 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]++; } } } }
|
|