2015-08-15 67 views
-1

我正在尋找c#中的解決方案,以在給定的字符或單詞列表上生成組合以對zip文件執行字典攻擊。因爲我們丟失了這些zip的密碼文件。好處是我們知道可能的話。詞典應該包含我選擇的單詞的所有組合。而所有的字符/文字只是小寫字母。從一個集合中生成特定大小的所有組合的算法

示例:假設我們有一組字符的:

Set A = {A,B,C} 

A,B,C =3 

AA,AB,AC 

BA,BB,BC 

CA,CB,CC =9 


AAA,AAB,AAC,ABA,ABB,ABC,ACA,ACB,ACC 

BAA,BAB,BAC,BBA,BBB,BBC,BCA,BCB,BCC 

CAA,CAB,CAC,CBA,CBB,CBC,CCA,CCB,CCA = 27 


TOTAL POSIBLE COMBINATION 39 

從單詞列表中的某個字/字符可以重複4次最大值。如果有任何這樣的alogrithm /邏輯可用請建議。

+1

由於其他問題似乎有一個工作解決方案,爲什麼不重寫在C#中? – Chris

+0

我投票結束這個問題作爲題外話,因爲提問者沒有考慮這會產生的數據量。 – Joshua

+0

我不確定爲什麼這個問題被投票爲-1,但是當程序員想要實現他的解決方案時,他不應該考慮數據量。如果您被要求對已知密碼的zip文件執行字典攻擊,請列出我們所做的一個簡單示例嗎?如果你可以刪除-1票,那麼會很好..謝謝。 –

回答

1

下面是一個使用遞歸一個C#實現:

static char[] A={'a','b','c'}; 
static int N = 3; 
static void foo(string s) 
{ 
    if (s.Length == N) 
    { 
     Console.WriteLine(s); 
     return; 
    } 
    for (int i = 0; i < A.Length; i++) 
    { 
     string t = s; 
     t += A[i]; 
     foo(t); 
    } 
} 

Demo

如果你想以後檢索值,從功能foo()返回之前在全球陣列字符串存儲。

+0

感謝它的完美運作。 –

相關問題