2011-09-15 26 views
-1

我不喜歡這種工具我自己,但脂肪酶說它最快的破解密碼在暴力,但我的興趣不破解密碼,我需要的算法,生成暴力數據,如「AA,AB,AC,...... ZA」,但我似乎無法在源代碼中找到它,任何人都可以告訴我它會是什麼樣子或我應該在哪裏在源代碼中查找它?需要一些指向約翰的部分代碼開膛手

或者如果有人知道一個好的和快速的算法來根據給定的字符集生成這些字符串? like

char *charset1 = "abcdefghijklmnopqrstuvwxyz"; 
    char *charset1 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
    char *charset1 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ........ 

謝謝。

回答

1

解決您的問題。

  1. 生成所有一個字符串A - Z
  2. 生成所有2字符串AA - ZZ
  3. 生成所有3個字符串AAA - ZZZ

現在考慮治療,例如AAA - ZZZ,作爲打印所有可能的3位數字的基地26(或無論您的字符集中有多少字符)的問題

約翰開膛手開始使用不同的技術,其內置的字典:

密碼
密碼
PASSW0RD
PASSW0RD

埃塔:這裏是兩個字符版本AA - ZZ的一些示例代碼。我的C是非常生鏽的,所以這個片段是爪哇:

// Character set 
String charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
int cSetSize = charset.length(); 

// Two character strings AA - ZZ 
int numChars = 2; 
int limit = cSetSize * cSetSize; 
char[] result = new char[numChars]; 

// Build strings 
for (int i = 0; i < limit; ++i) { 

    // Convert i to base cSetSize 
    int current = i; 
    for (int j = numChars - 1; j >= 0; --j) { 
     result[j] = charset.charAt(current % cSetSize); 
     current /= cSetSize; 
    } 

    // Do something with string 
    System.out.println(new String(result)); 
} 
+0

但除了與字典技術。它也使用暴力,我想。我只是要求找到最快的算法,我寫我自己的,但它包含大量的if語句和循環,所以我問我是否能找到最快的閱讀方式,並且可能使它更快 – killercode

+0

@killercode:設置一個for循環。將索引轉換爲一個基數爲n的數字,其中n = 26,36,52,62或其他。 – rossum

+0

你有樣品或東西嗎? – killercode