Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 暴力破解密码_Java_String_Equals - Fatal编程技术网

Java 暴力破解密码

Java 暴力破解密码,java,string,equals,Java,String,Equals,我正在为这个类做一个赋值,我必须用java创建一个暴力破解密码器 使用递归编写函数来破解密码。密码长度未知(最多10个),由大写字母和数字组成。(将实际密码存储在程序中,仅用于检查当前获取的字符串是否为正确的密码。) 我的解决办法是: import java.util.Arrays; public class BruteForce { public static void main(String[] args) { bruteForce(3); } public stat

我正在为这个类做一个赋值,我必须用java创建一个暴力破解密码器

  • 使用递归编写函数来破解密码。密码长度未知(最多10个),由大写字母和数字组成。(将实际密码存储在程序中,仅用于检查当前获取的字符串是否为正确的密码。)
  • 我的解决办法是:

    import java.util.Arrays;
    
    public class BruteForce {
      public static void main(String[] args) {
        bruteForce(3);
      }
    
      public static String bruteForce(int size) {
        int[] password = new int[size];
        String[] finalPassword = new String[size];
        for (int i = 0; i < size; i++) {
          password[i] = 0;
          finalPassword[i] = "";
        }
        String pass = "AAA";
        return computePermutations(size, password, 0, pass);
      }
    
      private static String computePermutations(int size, int[] password, int position, String pass) {
        String testString = "";
        String assemble = "";
        for (int i = 0; i < 36; i++) {
          password[position] = i;
    
          if (position != size - 1) {
            testString = computePermutations(size, password, position + 1, pass);
            if (testString != "") {
              return testString;
            }
          } else if (position == size - 1) {
            for (int j = 0; j < size; j++) {
    
              switch (password[j] + 1) {
                case 1:
                  assemble = assemble + "A";
                  break;
                case 2:
                  assemble = assemble + "B";
                  break;
                case 3:
                  assemble = assemble + "C";
                  break;
                case 4:
                  assemble = assemble + "D";
                  break;
                case 5:
                  assemble = assemble + "E";
                  break;
                case 6:
                  assemble = assemble + "F";
                  break;
                case 7:
                  assemble = assemble + "G";
                  break;
                case 8:
                  assemble = assemble + "H";
                  break;
                case 9:
                  assemble = assemble + "I";
                  break;
                case 10:
                  assemble = assemble + "J";
                  break;
                case 11:
                  assemble = assemble + "K";
                  break;
                case 12:
                  assemble = assemble + "L";
                  break;
                case 13:
                  assemble = assemble + "M";
                  break;
                case 14:
                  assemble = assemble + "N";
                  break;
                case 15:
                  assemble = assemble + "O";
                  break;
                case 16:
                  assemble = assemble + "P";
                  break;
                case 17:
                  assemble = assemble + "Q";
                  break;
                case 18:
                  assemble = assemble + "R";
                  break;
                case 19:
                  assemble = assemble + "S";
                  break;
                case 20:
                  assemble = assemble + "T";
                  break;
                case 21:
                  assemble = assemble + "U";
                  break;
                case 22:
                  assemble = assemble + "V";
                  break;
                case 23:
                  assemble = assemble + "W";
                  break;
                case 24:
                  assemble = assemble + "X";
                  break;
                case 25:
                  assemble = assemble + "Y";
                  break;
                case 26:
                  assemble = assemble + "Z";
                  break;
                case 27:
                  assemble = assemble + "0";
                  break;
                case 28:
                  assemble = assemble + "1";
                  break;
                case 29:
                  assemble = assemble + "2";
                  break;
                case 30:
                  assemble = assemble + "3";
                  break;
                case 31:
                  assemble = assemble + "4";
                  break;
                case 32:
                  assemble = assemble + "5";
                  break;
                case 33:
                  assemble = assemble + "6";
                  break;
                case 34:
                  assemble = assemble + "7";
                  break;
                case 35:
                  assemble = assemble + "8";
                  break;
                case 36:
                  assemble = assemble + "9";
                  break;
              }
    
            }
            System.out.println(assemble);
            if (assemble.equalsIgnoreCase(pass)) {
              System.out.println("Password is: " + assemble);
              break; //replace this with: return assemble;
            } else {
              assemble = "";
            }
          }
    
    
        }
        return "";
      }
    }
    
    导入java.util.array;
    公共类暴力{
    公共静态void main(字符串[]args){
    蛮力(3);
    }
    公共静态字符串暴力(整数大小){
    int[]密码=新int[size];
    字符串[]finalPassword=新字符串[大小];
    对于(int i=0;i

    然而,当我运行该程序时,密码AAA似乎永远不会工作,但998工作正常,到底出了什么问题?

    您的主要问题似乎是在正确的点上中断循环。尝试使用标签来打破循环并解决此问题。在此处查找有关标签的详细信息:

    LabelDemo类中断{
    公共静态void main(字符串[]args){
    int[][]数组查找={
    { 32, 87, 3, 589 },
    { 12, 1076, 2000, 8 },
    { 622, 127, 77, 955 }
    };
    int searchfor=12;
    int i;
    int j=0;
    布尔foundIt=false;
    搜索:
    对于(i=0;i
    您的主要问题似乎是在正确的位置打破循环。尝试使用标签来打破循环并解决此问题。在此处查找有关标签的详细信息:

    LabelDemo类中断{
    公共静态void main(字符串[]args){
    int[][]数组查找={
    { 32, 87, 3, 5
    
    class BreakWithLabelDemo {
    public static void main(String[] args) {
    
        int[][] arrayOfInts = { 
            { 32, 87, 3, 589 },
            { 12, 1076, 2000, 8 },
            { 622, 127, 77, 955 }
        };
        int searchfor = 12;
    
        int i;
        int j = 0;
        boolean foundIt = false;
    
    search:
        for (i = 0; i < arrayOfInts.length; i++) {
            for (j = 0; j < arrayOfInts[i].length;
                 j++) {
                if (arrayOfInts[i][j] == searchfor) {
                    foundIt = true;
                    break search;
                }
            }
        }
    
        if (foundIt) {
            System.out.println("Found " + searchfor + " at " + i + ", " + j);
        } else {
            System.out.println(searchfor + " not in the array");
        }
     }}
    
    if (assemble.equalsIgnoreCase(pass)) {
        System.out.println("Password is: " + assemble);
        return assemble; // This is missing
    }