密码查找器(类似于暴力)Java

时间:2015-10-04 23:58:24

标签: java

我的代码有问题。 该程序正在查找每个密码,包含1个字母和3个字母。 密码用2个字母,程序只能找到密码“11”。 同样的方式,5个字母只找到“11111”。 用4/6字母,程序没有找到任何密码。

代码中有很多“if”抱歉这个烂摊子但这是我想要创建密码查找器的唯一方法。(该程序是一个练习的个人项目)

package passwordfind10num;
import java.util.Scanner;

public class Passwordfind10num {

    public static void main(String[] args) {
        char[] charArray = { '1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
            'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'g', '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', 'G',
            'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
            'W', 'X', 'Y', 'Z', '!', '@', '#', '$', '%', '^', '&', '*',
            '(', ')', '_', '-', '+', '=', '\\', '|', ',', '<', '>', '/',
            '?', '~' }; 

        Scanner in = new Scanner(System.in);

        System.out.println("Enter a password");
        String password = in.next();

        String found = "";
        int array = -1;
        int array2 = -1;
        int array3 = -1;
        int array4 = -1;
        int array5 = -1;
        int array6 = -1;

        while (!found.equals(password)) {
            if (array5 == 83) {
                array6++;
                array5 = 0;
                array4 = 0;
                array3 = 0;
                array2 = 0;
                array = 0;
                found = String.valueOf(charArray[array6] + charArray[array5]
                        + charArray[array4] + charArray[array3])
                        + String.valueOf(charArray[array2])
                        + String.valueOf(charArray[array]);
            } else if (array4 == 83) {
                array5++;
                array4 = 0;
                array3 = 0;
                array2 = 0;
                array = 0;
                if (array6 == -1)
                    found = String.valueOf(charArray[array5]
                            + charArray[array4] + charArray[array3])
                            + String.valueOf(charArray[array2])
                            + String.valueOf(charArray[array]);
                else
                    found = String.valueOf(charArray[array6]
                            + charArray[array5] + charArray[array4]
                            + charArray[array3])
                            + String.valueOf(charArray[array2])
                            + String.valueOf(charArray[array]);

            } else if (array3 == 83) {
                array4++;
                array3 = 0;
                array2 = 0;
                array = 0;

                if (array6 == -1 && array5 == -1)
                    found = String.valueOf(charArray[array4]
                            + charArray[array3])
                            + String.valueOf(charArray[array2])
                            + String.valueOf(charArray[array]);
                else if (array6 == -1)
                    found = String.valueOf(charArray[array5]
                            + charArray[array4] + charArray[array3])
                            + String.valueOf(charArray[array2])
                            + String.valueOf(charArray[array]);
                else
                    found = String.valueOf(charArray[array6]
                            + charArray[array5] + charArray[array4]
                            + charArray[array3])
                            + String.valueOf(charArray[array2])
                            + String.valueOf(charArray[array]);

            } else if (array2 == 83) {
                array3++;
                array2 = 0;
                array = 0;

                if (array6 == -1 && array5 == -1 && array4 == -1)
                    found = String.valueOf(charArray[array3])
                            + String.valueOf(charArray[array2])
                            + String.valueOf(charArray[array]);
                else if (array6 == -1 && array5 == -1)
                    found = String.valueOf(charArray[array4]
                            + charArray[array3])
                            + String.valueOf(charArray[array2])
                            + String.valueOf(charArray[array]);
                else if (array6 == -1)
                    found = String.valueOf(charArray[array5]
                            + charArray[array4] + charArray[array3])
                            + String.valueOf(charArray[array2])
                            + String.valueOf(charArray[array]);
                else
                    found = String.valueOf(charArray[array6]
                            + charArray[array5] + charArray[array4]
                            + charArray[array3])
                            + String.valueOf(charArray[array2])
                            + String.valueOf(charArray[array]);

            } else if (array == 83) {
                array2++;
                array = 0;

                if (array6 == -1 && array5 == -1 && array4 == -1
                        && array3 == -1)
                    found = String
                            .valueOf(charArray[array2] + charArray[array]);
                else if (array6 == -1 && array5 == -1 && array4 == -1)
                    found = String.valueOf(charArray[array3])
                            + String.valueOf(charArray[array2])
                            + String.valueOf(charArray[array]);
                else if (array6 == -1 && array5 == -1)
                    found = String.valueOf(charArray[array4]
                            + charArray[array3])
                            + String.valueOf(charArray[array2])
                            + String.valueOf(charArray[array]);
                else if (array6 == -1)
                    found = String.valueOf(charArray[array5]
                            + charArray[array4] + charArray[array3])
                            + String.valueOf(charArray[array2])
                            + String.valueOf(charArray[array]);
                else
                    found = String.valueOf(charArray[array6]
                            + charArray[array5] + charArray[array4]
                            + charArray[array3])
                            + String.valueOf(charArray[array2])
                            + String.valueOf(charArray[array]);

            } else {
                array++;
                if (array6 == -1 && array5 == -1 && array4 == -1
                        && array3 == -1 && array2 == -1)
                    found = String.valueOf(charArray[array]);
                else if (array6 == -1 && array5 == -1 && array4 == -1
                        && array3 == -1)
                    found = String
                            .valueOf(charArray[array2] + charArray[array]);
                else if (array6 == -1 && array5 == -1 && array4 == -1)
                    found = String.valueOf(charArray[array3])
                            + String.valueOf(charArray[array2])
                            + String.valueOf(charArray[array]);
                else if (array6 == -1 && array5 == -1)
                    found = String.valueOf(charArray[array4]
                            + charArray[array3])
                            + String.valueOf(charArray[array2])
                            + String.valueOf(charArray[array]);
                else if (array6 == -1)
                    found = String.valueOf(charArray[array5]
                            + charArray[array4] + charArray[array3])
                            + String.valueOf(charArray[array2])
                            + String.valueOf(charArray[array]);
                else
                    found = String.valueOf(charArray[array6]
                            + charArray[array5] + charArray[array4]
                            + charArray[array3])
                            + String.valueOf(charArray[array2])
                            + String.valueOf(charArray[array]);

            }
        }
        System.out.println("password found:" + " " + found);
    }        
}

1 个答案:

答案 0 :(得分:1)

  

如何在没有重复的情况下再次编写它?

提示:首先将6个arrayn int变量替换为单个int[]变量

提示#2:重新开始比通过修改此代码尝试重构更好。 (如果你准确地重构了一个带有bug的程序,你最终得到了另一个具有相同错误的程序......可能是错误的结构。)

相关问题