마지막으로 무차별 공격을 사용하여 암호를 끊는 데 얼마나 오랜 시간이 걸릴지 궁금해졌습니다. 나는 그것을 확인하고 싶다.주어진 범위 내에서 가능한 모든 키 조합을 찾는 알고리즘
알고리즘을 구현하여 주어진 범위의 모든 가능한 키 조합을 찾으려면 어떻게해야합니까? (예 : 15 자)? 순열에 대한 알고리즘을 찾았지만 주어진 단어에 대한 문자를 모두 바꿔서, 내가 찾던 것이 아닙니다.
마지막으로 무차별 공격을 사용하여 암호를 끊는 데 얼마나 오랜 시간이 걸릴지 궁금해졌습니다. 나는 그것을 확인하고 싶다.주어진 범위 내에서 가능한 모든 키 조합을 찾는 알고리즘
알고리즘을 구현하여 주어진 범위의 모든 가능한 키 조합을 찾으려면 어떻게해야합니까? (예 : 15 자)? 순열에 대한 알고리즘을 찾았지만 주어진 단어에 대한 문자를 모두 바꿔서, 내가 찾던 것이 아닙니다.
암호가 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);
}
하지 않음 실제로 효율성을 위해 작성되었지만 충분한 메모리와 시간이 있다면 모든 가능한 순열을 얻을 수 있습니다.
php pear project math combinatoric을 다운로드하면 해당 비밀번호를 생성 할 수 있습니다.
나는 알고리즘을 돌려 계산하지 않기를 원합니다.) –
@ MichałTabor 계산을 수행 할 시간이나 컴퓨터 메모리가 없습니다. 나는 순열을 계산할 수있는 빠른 프로젝트를 수행했고, 7,664,255,028,754,501,632를 내놓았다. 초당 백만 개의 암호를 계산하면 모든 가능성을 뛰어 넘는 데 243,032 * 년 * 걸릴 것입니다. 연습을 위해 알고리즘을 제 답변에 추가하겠습니다. – Curt