중앙대 경영학과 26학번 [1291262] · MS 2024 · 쪽지

2025-08-01 14:15:06
조회수 91

평가원 해시 함수 지문 질문

게시글 주소: https://orbi.kr/00074099382

단순히 입찰가의 해시함숫값만을 게시하는게 아니라 논스의 해시함숫값, 논스+입찰가의 해시함슷값을 제시하는 건 다른사람이 노가다로 하나하나씩 찍어서 입찰가 역으로 알아내는걸 방지하기 위함인가요? 논스 더하면 값이 커지니까 찍는 범위가 넓어져 쉽게 찍을 수 없게 되는건가요?


0 XDK (+0)

  1. 유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.

  • 물량공급 · 311238 · 16시간 전 · MS 2009 (수정됨)

    입찰가의 해시함수 값을 게시하는 면, 동일한 입찰가는 동일한 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이라는 것을 알아낼 수 없기 때문입니다.

  • 중앙대 경영학과 26학번 · 1291262 · 15시간 전 · MS 2024

    와 감사해요
    저 함숫값은 실제 모델 사용한건가요?

  • 물량공급 · 311238 · 15시간 전 · MS 2009

    네 맞습니다 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)라는 것을 섞어야 하는데
    쉽게 설명하려다보니 경매가에 단순히 숫자를 더하는 것으로 혼란을 주는 제시문이 제공된 듯 합니다.