import org.junit.Test;
public class T {
//最小长度
private int min = 1;
//最大长度
private int max = 10;
//准备数字,大小写
private char[] psw = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
@Test
public void t(){
for(int i=min; i<=max; i++){
permutation(psw, i);
}
}
/**
* 全排列入口
* @param array 密码数据
* @param n 密码长度
*/
private void permutation(char[] array, int n) {
permutation("", array, n);
}
/**
*
* @param s 已生成临时字串
* @param array 密码数据
* @param n 剩余未生成的字符长度
*/
private void permutation(String s, char[] array, int n) {
if(n == 1) {
for(int i=0; i
String result = s+array[i];
System.out.println(result);
}
} else {
for(int i=0; i
}
}
}
}
不过建议不要暴力,有针对性会好一点
暴力破解本身非常容易,使用遍历和字典都很容易。关键是需要破解的对象的交互方式或算法和如何判断成功破解。
例如有个3位数的拨轮,就是最简单的那种密码锁,电脑可以瞬间产生出 000-999 1000个暴力项,可是还是需要你人手一个一个拨,然后去看有没有开。 人手去拨就是交互,看看有没有被打开就是判断结果。如果电脑无法做这件事,暴力破解就没有意义。
你现在的情况也是这样。没人知道你的被破解对象,就无法知道交互和check。所以没人能写。