Dobrý den, chtěl bych se moc zeptat zda by mi někdo neporadil, jak zrychlit tento kod.Jedná se o prolomení hesla, ve kterém při metodě( BruteForceAttacker) útočník zkouší postupně všechny možné kombinace znaků, dokud neuhodne heslo. Jelikož zkouší některá hesla vícekrát, proto je pomalý.Prosím neví někdo jak ho zrychlit? Pomoc spěchá!!
import java.util.ArrayList;
import java.util.List;
public class BruteForceAttacker extends Thief {
public static List<String> getPermutace(String input) {
List<String> soubor = null;
if (input.length() == 1) {
soubor = new ArrayList<String>();
soubor.add(input);
return soubor;
} else {
soubor = getPermutace(input.substring(1));
Character prvni = input.charAt(0);
List<String> result = new ArrayList<String>();
for (String str : soubor) {
for (int i = 0; i < str.length(); i++) {
String item = str.substring(0, i) + prvni
+ str.substring(i);
result.add(item);
}
String item = str.concat(prvni.toString());
result.add(item);
}
return result;
}
}
@Override
public void breakPassword(int sizeOfPassword) {
StringBuilder sb2 = new StringBuilder();
for (int i = 1; i < sizeOfPassword; i++) {
sb2.append(this.getCharacters());
}
for (String pw : getPermutace(sb2.toString())) {
this.tryOpen(pw.substring(0, sizeOfPassword).toCharArray());
if (this.isOpened()) {
return;
}
}
}
}