평가원 해시 함수 지문 질문
게시글 주소: https://orbi.kr/00074099382
단순히 입찰가의 해시함숫값만을 게시하는게 아니라 논스의 해시함숫값, 논스+입찰가의 해시함슷값을 제시하는 건 다른사람이 노가다로 하나하나씩 찍어서 입찰가 역으로 알아내는걸 방지하기 위함인가요? 논스 더하면 값이 커지니까 찍는 범위가 넓어져 쉽게 찍을 수 없게 되는건가요?
0 XDK (+0)
유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.
-
준비물: 달콤한 보이스
-
자야만한다 2
해가 떴다 시팔
-
내 겨드랑이 냄새가 더 심해서 아무 냄새도 못맡았음... 인간한테도 지는데 ㄹㅇ 근들갑인듯
-
내가만든레어뺏겼어 10
나그냥죽을게
-
ㅈㄴ부잔가 참치 왜먹음 그럴거면
-
자취방 귀엽게 꾸밀거얌
-
ㄸㅊㄹㄱㄱ 15
ㅈㅈㄹㅇㄹㅂㅇㄷ
-
이제노피아보러가야지
-
난 초인이다.
-
얼버잠 1
-
서연고 가면 흔하게 볼 수 있음? 말 그대로 유니콘
-
노벨문학상은 영어로 14
노벨노벨프라이즈인가
-
또 사람을 팼느냐 매그너스..
-
기하 드릴 사버릴까 12
람쥐가 보내준거 몇개 푸러봣는데 좋드라고 다운은 받아놓긴햇는데..
-
방귀가 너무 많아서 질질 새는데 장애인이냐고 꼽먹었어요
-
4규근본은 선택도 시즌 12였는데... 원래 한석원쌤 기출책 4점기출 말고 10년간...
-
이런말 해도 되나 11
보통 어느선부터 짜르냐 오르비는 알다가도 모르겟네
-
뭘 들어야할지 모르겠음 메가에 들을 사람이 없는데 우짬
입찰가의 해시함수 값을 게시하는 면, 동일한 입찰가는 동일한 hash값을 같습니다.
예를들어 a라는 사람은 (100만원) B라는 사람도 (100만원)을 입찰한다고 가정해봅시다
이때 100만원의 hash 값은 (실제 MD5라는 알고리즘으로 변환했습니다.)
A : 8155bc545f84d9652f1012ef2bdfb6eb 로 동일합니다.
B : 8155bc545f84d9652f1012ef2bdfb6eb 로 동일합니다.
만약 이것을 공개적으로 게시한다면 B와 A는 서로 어떤 가격을 냈는지 알 수 있습니다.
(A와 B의 HASH값이 동일하므로..)
대신 A의 논스를 41959 B의 논스를 18823라고 해봅시다
그렇다고하면
A의 논스의 hash값은 41959 : 2beb774329b2f0fe5e7952cba91c0af7
B의 논스의 hash값은 18823 : a269ef5c1e7623a02a651fad5f2b8905
이 되고
논스+입찰가는
A 1041959 : d34c67f90968d81acd773569f68ab861
B 1018823 : 6070ed3a29a1702c88ada6fa448f96c3
으로 서로 같은 입찰가를 적었지만 A와 B는 이 hash값만 가지고 서로 어떤 입찰가를 적었는지 알 수 없습니다.
논스를 더하는것은 논스 차이가 1정도만 달라져도 크게 달라집니다.
예를들어
1000000 : 8155bc545f84d9652f1012ef2bdfb6eb
1000001 : 59e711d152de7bec7304a8c2ecaf9f0f
1000002 : 877466ffd21fe26dd1b3366330b7b560
이렇게 1정도만 차이났을때 877466ffd21fe26dd1b3366330b7b560 이런 HASH 값을 보고 HASH함수의 역함수를 이용해 1000002이라는 것을 알아낼 수 없기 때문입니다.
와 감사해요
저 함숫값은 실제 모델 사용한건가요?
네 맞습니다 md5라는 hash알고리즘을 이용했습니다.
그런데 예시가 다소 잘못된 것으로 보이는데 '실제'로는
입찰가가 자연수, 논스도 자연수 범위에 있다면 '노가다'를 그래픽카드에 시켜서 조회하면
현실적인 가격 범위 (1원~100억) 정도는 10초이내 찾을 수 있습니다
hash 알고리즘이 공개되었다고하니 1부터 100억까지 하나씩 hash를 변환해서 비교대조해보면 되니까요
1000000 : 8155bc545f84d9652f1012ef2bdfb6eb
1000001 : 59e711d152de7bec7304a8c2ecaf9f0f
1000002 : 877466ffd21fe26dd1b3366330b7b560
...
이런식으로 말이죠
이 hash알고리즘이 알려져있다고 해도 59e711d152de7bec7304a8c2ecaf9f0f을 보고 역으로 계산해서 1000001을 알아낼 순 없지만
1000000 : 8155bc545f84d9652f1012ef2bdfb6eb
1000001 : 59e711d152de7bec7304a8c2ecaf9f0f
1000002 : 877466ffd21fe26dd1b3366330b7b560
...
이런식으로 100억개의 숫자의 hash값을 모두 생성해 hash값을 비교대조해서 알아낼 수 있습니다.
실제로는 숫자가 아니라 긴 문자열 (salt)라는 것을 섞어야 하는데
쉽게 설명하려다보니 경매가에 단순히 숫자를 더하는 것으로 혼란을 주는 제시문이 제공된 듯 합니다.