2011-09-15 28 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