-1

我自己不喜欢这种工具,但是人们说它是暴力破解密码最快的工具,但我的兴趣不是破解密码,我需要生成暴力数据的算法,例如“AA,AB, AC,......ZA”,但我似乎无法在源代码中找到它,谁能告诉我它会是什么样子或者我应该在哪里寻找它?

或者是否有人知道根据给定字符集生成这些字符串的快速算法?像

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

谢谢。

4

1 回答 1

1

分解你的问题。

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

现在考虑将例如 AAA - ZZZ 视为以 26 为基数打印所有可能的 3 位数字的问题(或者无论您的字符集中有多少字符)

开膛手约翰开始使用不同的技术,内置字典:

密码
密码
passw0rd
Passw0rd

ETA:这是两个字符版本 AA - ZZ 的一些示例代码。我的 C 非常生锈,所以这个片段是 Java:

// 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));
}
于 2011-09-15T20:47:32.603 回答