2013-08-04 5 views
0

마지막으로 무차별 공격을 사용하여 암호를 끊는 데 얼마나 오랜 시간이 걸릴지 궁금해졌습니다. 나는 그것을 확인하고 싶다.주어진 범위 내에서 가능한 모든 키 조합을 찾는 알고리즘

알고리즘을 구현하여 주어진 범위의 모든 가능한 키 조합을 찾으려면 어떻게해야합니까? (예 : 15 자)? 순열에 대한 알고리즘을 찾았지만 주어진 단어에 대한 문자를 모두 바꿔서, 내가 찾던 것이 아닙니다.

답변

1

암호가 89 개의 가능한 문자 (az, az, 0-9, 공백 및 Windows 키보드의 모든 다른 기호 키)의 조합으로 구성 될 수 있다고 가정하면 거기에 82 개의 15 번째 다른 조합 15 자 (82 * 82 * 82 ...). 다른 말로하면, 많이.

문자 만 사용하고 대문자와 소문자를 구별하려면 52 ** 15 개의 가능한 15 자 조합이 있어야합니다. 당신이 할 수

long combos = 0 

    for i = 6 TO 20   -- legal password lengths 
    combos = combos + POW(52, i) 

    print "there are " + combos.ToString() 
     + " possible passwords between 6 and 20 characters" 

실제로 열거하고 C#에서 순열을 인쇄 : 당신은뿐만 아니라 짧은 문자열의 가능성을 가지고 싶다면 당신은 같은 (의사)를 쓸 수

void AddNextCharAndPrintIfDone(string pwd, int maxLen) 
    { 
    for (char c = 'a'; c < 'Z'; c++) 
    { 
     pwd = pwd + c; 
     if (pwd.Length >= maxLen) 
      System.Console.WriteLine(pwd); 
     else AddNextCharAndPrintIfDone(pwd, maxLen) 
    } 
    } 

    Main() 
    { 
    for (int i=6; i < 20; i++) 
      AddNextCharAndPrintIfDone("", i); 
    } 

하지 않음 실제로 효율성을 위해 작성되었지만 충분한 메모리와 시간이 있다면 모든 가능한 순열을 얻을 수 있습니다.

+0

나는 알고리즘을 돌려 계산하지 않기를 원합니다.) –

+0

@ MichałTabor 계산을 수행 할 시간이나 컴퓨터 메모리가 없습니다. 나는 순열을 계산할 수있는 빠른 프로젝트를 수행했고, 7,664,255,028,754,501,632를 내놓았다. 초당 백만 개의 암호를 계산하면 모든 가능성을 뛰어 넘는 데 243,032 * 년 * 걸릴 것입니다. 연습을 위해 알고리즘을 제 답변에 추가하겠습니다. – Curt

0

php pear project math combinatoric을 다운로드하면 해당 비밀번호를 생성 할 수 있습니다.

관련 문제