일부 팀원이 오늘 암호 저장 및 일반적인 보안 문제를 논의하고있었습니다. 어쨌든, GPU 가속 급제 공격이 전통적인 CPU 전용 구현과 어떻게 비교되는지 간단히 논의했습니다.순열 생성
내 관심이있어 일부 코드로 놀기로 결정했습니다. 이전에는 이런 식으로 작성한 적이 없기 때문에 간단한 (CPU 전용) 무차별 대입 (brute-forcer)을 작성하기로 결정했습니다. 나의 초기 구현은 고정 길이 (4 자리)의 패스워드를 다루었 다. 테스트 목적을 위해 다음과 같이 구현했습니다.
for(char a = '0'; a <= '9'; ++a)
{
for(char b = '0'; b <= '9'; ++b)
{
for(char c = '0'; c <= '9'; ++c)
{
for(char d = '0'; d <= '9'; ++d)
{
candidate[0] = a; candidate[1] = b;
candidate[2] = c; candidate[3] = d;
// Test 'candidate'...
}
}
}
}
이것은 잘 작동하지만 분명히 융통성이 없습니다. 위의 내용을 일반화하여 모든 암호 길이를 처리하려고 시도했지만 실패했습니다. 웬일인지, 나는이 brute-forcers가 "알파벳"이 주어진 1-n 문자 가능성을 뛰어 넘기 위해 사용하는 논리에 대해 머리를 맞출 수 없다.
이 작업을 수행하는 데 사용할 수있는 일반적인 알고리즘이 있습니까? 모든 예제가 환영합니다.
당신이 찾고있는 개념이라고합니다 [재귀] (http://en.wikipedia.org/wiki/Recursion) : –
중복 - http://stackoverflow.com/q/3183469/21727 – mbeckish
prob 렘은 n 중첩 된 루프가 있어야하지만, n은 런타임에만 알려져 있습니다. =/ – BlackBear