2015-10-04 49 views
0

我有問題的代碼。 該程序正在尋找每個密碼與1個字母和3個字母。 帶2個字母的密碼該程序只能找到密碼「11」。 用5個字母相同的方式只找到「11111」。 與4/6字母該程序不找到任何密碼。密碼查找器(類似bruteforce)Java

與代碼很多「如果」遺憾的一塌糊塗,但是,這是我在想創建密碼取景器的唯一途徑。(該程序是用來操練一個個人項目)

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

請讓我們避免發佈代碼鏈接,而是在你的問題中發佈代碼,這次我爲你做了。 –

+2

你的代碼看起來像有很多不必要的重複和不必要的複雜性,這使得我們很難理解並且爲你和我們調試。我要做的第一件事就是重構和簡化。或者更好的是,把它扔掉並重新開始。 –

+0

我一直在寫3個字母相同的程序,它工作正常。代碼:http://pastebin.com/fZKpLXuf也許它可以幫助你。我正在試圖將該程序擴展爲6個字母......並且我怎樣才能在沒有重複的情況下再次寫入該程序?我必須檢查用戶寫入的1/2/3/4/5/6所有可能的密碼。 –

回答

1

如何我可以不用重複地再寫一遍嗎?

提示:再次啓動會比試圖通過修改這個代碼重構更好:用一個單一的int[]可變

提示#2更換6個arrayn int變量開始。 (如果你準確地用一個bug重構一個程序,你最終會得到另一個有相同bug的程序......並且可能是錯誤的結構。)