ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 해싱(hashing)이란?
    programing/용어정리 2017. 11. 2. 16:30

    해시 함수(hash function)는 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수이다. 해시 함수에 의해 얻어지는 값은 해시 값, 해시 코드, 해시 체크섬 또는 간단하게 해시라고 한다. 


    그 용도 중 하나는 해시 테이블이라는 자료구조에 사용되며, 매우 빠른 데이터 검색을 위한 컴퓨터 소프트웨어에 널리 사용된다. 

    위키백과


    해시 함수는 큰 파일에서 중복되는 레코드를 찾을 수 있기 때문에 데이터베이스 검색이나 테이블 검색의 속도를 가속할 수 있다. 예를 들어서, DNA sequence에서 유사한 패턴을 찾는데 사용될 수도 있다. 


    또한 암호학에서도 사용될 수 있다. 암호용 해시 함수는 매핑된 해싱 값만을 알아가지고는 원래 입력 값을 알아내기 힘들다는 사실에 의해 사용될 수 있다. 


    또한 전송된 데이터의 무결성을 확인해주는 데 사용되기도 하는데, 메시지가 누구에게서 온 것인지 입증해주는 HMAC를 구성하는 블록으로 사용된다. 해시 함수는 결정론적으로 작동해야 하며, 따라서 두 해시 값이 다르다면 그 해시값에 대한 원래 데이터도 달라야 한다. 


    해시 함수의 질은 입력 영역에서의 해시 충돌 확률로 결정되는데, 해시 충돌의 확률이 높을수록 서로 다른 데이터를 구별하기 어려워지고 검색하는 비용이 증가하게 된다.

    ▲ 위키피디아


    특징

    해시 함수의 가장 기본적인 성질은 두 해시 값이 다르다면 원래의 데이터도 다르다는 것이다. 이 특징은 해시 함수가 결정적이기 때문이다. 반대로 해시 함수는 단사 함수가 아니다. 


    같은 해시 값을 갖더라도 원래의 입력값이 같다는 것을 시사하지만 보장해주지는 않는다. 원래 입력의 한 비트만 바뀌더라도 해시 함수의 성질로 인해 해시 값은 크게 달라진다.

    ▲ 위키피디아


    사용되는 예


    코인원

    SIGNATURE = HMAC-SHA512(payload, secret_key.upper()).TO_HEX_DIGEST()

    1
    2
    3
    4
    5
    import hashlib
    import hmac
     
    #X-COINONE-SIGNATURE
    signature = hmac.new(str(SECRET_KEY).upper(), str(PAYLOAD), hashlib.sha512).hexdigest();
    cs

    코인원


    CPDAX

    CP-ACCESS-DIGEST : 아래의 data 를 sha256 HMAC을 사용하여 계산한 hash string. 

    이 때 키로 미리 발급 받은 API secret을 사용

    CPDAX

    CPDAX

    'programing > 용어정리' 카테고리의 다른 글

    하드포크(hard fork) 용어 정리  (0) 2017.11.17
    HTTP메소드 종류는 어떤 것들이?  (0) 2017.11.07
    Open API 이란?  (0) 2017.11.03
Designed by Tistory.