1. 程式人生 > >破解密碼之破解數字+字母密碼篇----java實現

破解密碼之破解數字+字母密碼篇----java實現

import java.lang.*;
public class PojiePassword{
   static String real="ZYXLXP";//真實密碼
   static String pass="";//執行迴圈操作找出來的與真實密碼相等的字串
   static String prod="";//中間產生的字串
   static  String [] s={"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"};
//定義一個有62個字串的字串陣列
//生成一個指定位數的密碼,每一位有以上62種可能,n=6時,第一個為000000,最後一個為ZZZZZZ,共//62^6種可能。n=7時,第一個為0000000,最後一個為ZZZZZZZ,共62^7種可 能。n=8時,第一個為//00000000,最後一個為ZZZZZZZZ,共62^8種可能
//62^6種情況,累死也列不出來,,,


public static void main(String []args)   throws InterruptedException{


//迴圈遍歷出陣列中的元素,列出陣列中的字元可以組成的所有一位字串,共62^1種可能
   
       for(int i=0;i<62;i++){
         prod=s[i];
         if(prod.equals(real)){
             pass=prod;
             System.out.println("執行"+(i+1)+"次操作,找到真實密碼,為"+pass); 
             break;
         }
         
     }
    
//列出陣列中的字元可以組成的所有兩位字串,共62^2種可能
 if(pass.equals("")){//在上一級未找到
    for(int i=0;i<62;i++){
         for(int j=0;j<62;j++){
             prod=s[i]+s[j];
             if(prod.equals(real)){
                pass=prod;
                System.out.println("找到真實密碼,為"+pass); 
                break;
             }
         }
     }
 }
//列出陣列中的字元可以組成的所有三位字串,共62^3種可能
  if(pass.equals("")){//在上一級未找到
    for(int i=0;i<62;i++){
         for(int j=0;j<62;j++){
             for(int k=0;k<62;k++){
                 prod=s[i]+s[j]+s[k];
                 if(prod.equals(real)){
                   pass=prod;
                   System.out.println("找到真實密碼,為"+pass); 
                   break;
                 }
            }
        }
              
     }
  }
//列出陣列中的字元可以組成的所有4位字串,共62^4種可能
  if(pass.equals("")){//在上一級未找到
    for(int i=0;i<62;i++){
         for(int j=0;j<62;j++){
             for(int k=0;k<62;k++){
                 for(int l=0;l<62;l++){
                      prod=s[i]+s[j]+s[k]+s[l];
                      if(prod.equals(real)){
                         pass=prod;
                         System.out.println("找到真實密碼,為"+pass); 
                         break;
                       }
                 }
             }
        }      
     }
  }
//列出陣列中的字元可以組成的所有5位字串,共62^5種可能
  if(pass.equals("")){//在上一級未找到
    for(int i=0;i<62;i++){
         for(int j=0;j<62;j++){
             for(int k=0;k<62;k++){
                 for(int l=0;l<62;l++){
                     for(int m=0;m<62;m++){
                          prod=s[i]+s[j]+s[k]+s[l]+s[m];
                          if(prod.equals(real)){
                             pass=prod;
                             System.out.println("找到真實密碼,為"+pass); 
                             break;
                          }
                     }
                 }
             }
        }            
     }
  }
//列出陣列中的字元可以組成的所有6位字串,共62^6種可能
  if(pass.equals("")){//在上一級未找到
    for(int i=0;i<62;i++){
         for(int j=0;j<62;j++){
             for(int k=0;k<62;k++){
                 for(int l=0;l<62;l++){
                     for(int m=0;m<62;m++){
                         for(int n=0;n<62;n++){
                             prod=s[i]+s[j]+s[k]+s[l]+s[m]+s[n];
                             if(prod.equals(real)){
                               pass=prod;
                               System.out.println("找到真實密碼,為"+pass); 
                               break;
                             }
                         }
                     }
                 }
             }
        }
              
     }
   }
    
  }
}