Java安全检查

时间:2015-10-06 16:54:00

标签: java security passwords

我正在尝试用Java创建一个应用程序来检查我的密码安全性。 这就是我已经做过的事情:

import java.util.Arrays;

public class BruteForce {

    public static void main(String[] args) {
        String password = "123123";
        char[] charset = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
        BruteForce bf = new BruteForce(charset, 1);

        String attempt = bf.toString();

        while (true) {

            if (attempt.equals(password)) {
                System.out.println("Password Found: " + attempt);
                break;
            }

            attempt = bf.toString();
            System.out.println("" + attempt);
            bf.increment();
        }
    }

    private char[] cs; // Character Set
    private char[] cg; // Current Guess

    public BruteForce(char[] characterSet, int guessLength) {
        cs = characterSet;
        cg = new char[guessLength];
        Arrays.fill(cg, cs[0]);
    }

    public void increment() {
        int index = cg.length - 1;

        while(index >= 0) {
            if (cg[index] == cs[cs.length-1]) {

                if (index == 0) {
                    cg = new char[cg.length+1];
                    Arrays.fill(cg, cs[0]);
                    break;
                }
                else {
                    cg[index] = cs[0];
                    index--;
                }
            }
            else {
                cg[index] = cs[Arrays.binarySearch(cs, cg[index]) + 1];
                break;
            }
        }
    }

    @Override
    public String toString() {
        return String.valueOf(cg);
    }
}

但是我需要很长时间才能得到“123123”作为密码(也许我甚至没有得到它,我不确定)... 有没有更好的方法用上/下字母和数字做这个?谢谢。

0 个答案:

没有答案