我有一個蠻力算法,但從來沒有完全理解它。我對某些事情有一種模糊的把握,但每次我嘗試關注發生的事情時,我都會迷路(例如,index
變量有點令人困惑)。任何有關如何使算法更高效的建議也是受歡迎的。解釋蠻力算法
注意 - 我已經有算法,它編譯和工作。請不要指責我試圖將其用於惡意目的,因爲我沒有用它來達到這個目的,我從來沒有打算這麼做。我只是想知道它是如何工作的。
public class BruteForceTest
{
public String username = new String();
public static String password = "ZZZZZ";
public static char[] charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
private static char[] currentGuess = new char[1];
public static void bruteForce()
{
String attempt = new String();
Date start = new Date();
while (true)
{
if (attempt.equals(password))
{
Date end = new Date();
System.out.println("Password: " + attempt + "\nTotal time to crack: " + ((end.getTime() - start.getTime())/1000) + " seconds." + "\n");
break;
}
attempt = in.toString();
// System.out.println("Tried: " + attempt);
in.increment();
}
}
public BruteForceTest()
{
Arrays.fill(currentGuess, charset[0]);
}
public void increment()
{
int index = currentGuess.length - 1;
while (index >= 0)
{
if (currentGuess[index] == charset[charset.length - 1])
{
if (index == 0)
{
currentGuess = new char[currentGuess.length + 1];
Arrays.fill(currentGuess, charset[0]);
break;
}
else
{
currentGuess[index] = charset[0];
index--;
}
}
else
{
currentGuess[index] = charset[Arrays.binarySearch(charset, currentGuess[index]) + 1];
break;
}
}
}
public String toString()
{
return String.valueOf(currentGuess);
}
}
蠻力不是具體算法的名稱。你應該說明你使用這種算法的用途。 – Headshota
@Headshota其實,它是。蠻力是枚舉所有有效密碼並逐一嘗試它們的算法。 –
這是一段簡單的Java代碼。如果你不明白,我建議你先購買一本好的Java編程教科書。如果你有一個具體的問題,也許我們可以回答。但是「請解釋這個」並不具有建設性...... –