破解密碼之破解數字+字母密碼篇----java實現
阿新 • • 發佈:2019-02-19
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; } } } } } } } } } }