이론상으로는 모든 경우를 다 시도해보기 때문에 못 푸는 문제가 없지만 시간상의 문제로 인해 불가능하다고 판단해야 하는 경우가 많다.
브루트포스로 해결할 수 있는 문제 중 가장 친숙한 예로는 자물쇠 풀기가 있다.
비밀번호가 4자리인 자물쇠를 푸는방법은 어떤것이 있을까?
물론 비밀번호를 알고있다면 가장 빠르게 풀겠지만, 모른다고해서 못푸는것은 아니다.
왜냐하면 모든 4자리 경우의수를 자물쇠에 대입해보면 되기 때문이다.
4자리 비밀번호를 맞춰야 하는 경우, 0000 ~ 9999까지 총 10,000개를 시도해보면 답을 구할 수 있다.
비밀번호 입력을 1번 시도하는데 드는 시간이 1초라고 한다면 10,000초 만에 해결할 수 있으므로 충분히 시도해볼 만하다.
그런데 만약 자물쇠의 비밀번호가 12자리인 경우라면 어떻게될까?
000000000000 ~ 999999999999까지는 총 경우의 수가 1,000,000,000,000(1조)가지가 존재한다.
위와 동일하게 한번 입력하는데 1초가 걸린다고 했을 때, 모든 경우를 시도해보는데 31,709년이 걸린다.
그렇기 때문에 브루트 포스는 모든 문제를 해결할 수 있는 방법이 아니며 경우의 수가 적은 경우에만 사용할 수 있는 방법이다.
브루트 포스로 해결을 할지 말지 정하는 가장 중요한 판단기준이기 때문에 반드시 계산해봐야 한다.
경우의 수가 브루트 포스로 해결해 볼만한 크기라면, 모든 경우를 빠뜨리지 않고 다 파악해야 한다.
반복문, 순열, 재귀, 비트 마스크 중 적절한 방법을 택해 모든 경우의 수를 대입해서 답을 구한다.
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.
댓글을 사용할 수 없습니다.